文档章节

数据结构与算法学习-简单排序算法之冒泡排序与选择排序

freedwang
 freedwang
发布于 2016/04/06 16:21
字数 822
阅读 35
收藏 0

一直觉得自己底层的数据结构与算法很差,现在开始抽时间慢慢的学习,慢慢累积知识。刚看了简单的冒泡排序与选择排序,就顺便练练手写下来了。

1.冒泡排序

冒泡排序应该是最简单、最基础的排序了。原理也很简单:假设有长度为N的int数组,数组索引从0至N-1,从数组的最左端开始,比较位置0和位置1的大小,如果位置0的数大,则交换两个位置,否则什么都不做。然后右移一个位置,比较位置1和位置2的大小,同样的办法比较,如果位置1大,则继续交换位置。就按这样的方式一直比较下去,第一轮循环走完之后最大数就已经出来了,这时在数组的N-1位置上。按照同样的方法再遍历数组,第二大的数就出现在N-2的位置上了。就这样的比较下去,最终一个有序的数组就出来啦。可能讲的不好,直接上个书上看的截图,截图是说得身高,都是一个意思。

QQ图片20160406160427

再上写的demo:

package com.freedwang.study.sort;

/**
 * 冒泡排序
 * Created by wangfei on 2016/4/6.
 */
public class BubbleSort {
    private static int[] data = {1,3,6,9,2,4,15,12,18,19,14,11};

    public static void sort() {
        for (int i=0; i<data.length-1; i++) {
            for (int j=0; j<data.length-1-i; j++) {
                if (data[j] > data[j+1]) {
                    int temp = data[j];
                    data[j] = data[j+1];
                    data[j+1] = temp;
                }
            }
        }
    }

    public static void display() {
        for (int i : data) {
            System.out.println(i);
        }
    }

    public static void main(String[] args) {
        sort();
        display();
    }

}

2.选择排序

原理也比较简单:假设有长度为N的int数组,数组索引从0至N-1,从数组的最左端位置0开始,从位置1开始至数组的末端找到最小的值,记下这个值或者索引,然后拿这个值和位置0的值做比较,大于位置0的值则与位置0交换位置,此时最左边的就是整个数组最小的值了。再拿位置1的值与位置2至数组末端的最小值比较,如果比位置1小则交换位置,此时位置1就是数组第二小的值了,以此类推,最终又是一个有序的数组了。说的不明白再上图:

 QQ图片20160406161714

再上代码demo:

package com.freedwang.study.sort;

/**
 * 选择排序
 * Created by wangfei on 2016/4/6.
 */
public class SelectSort {
    private static int[] data = {1,3,6,9,2,4,15,12,18,19,14,11};

    public static void sort() {
        for (int i=0; i<data.length-1; i++) {
            int min = i;
            for (int j=i+1; j<data.length; j++) {
                if (data[j] < data[min]) {
                    min = j;
                }
            }
            if (min != i) {
                int temp = data[min];
                data[min] = data[i];
                data[i] = temp;
            }
        }
    }

    public static void display() {
        for (int i : data) {
            System.out.println(i);
        }
    }

    public static void main(String[] args) {
        sort();
        display();
    }
}
小结:
技术是一个慢慢积累的过程,监督自己学习,慢慢进步,加油!代码不敢保证正确性哈,写的不对的请指教,开源中国的第一篇博客出来了。继续搬砖!!!

© 著作权归作者所有

共有 人打赏支持
freedwang
粉丝 0
博文 2
码字总数 1358
作品 0
昌平
六种排序算法的JavaScript实现以及总结

最近几天在系统的复习排序算法,之前都没有系统性的学习过,也没有留下过什么笔记,所以很快就忘了,这次好好地学习一下。 首先说明为了减少限制,以下代码通通运行于Node V8引擎而非浏览器,...

DM.Zhong
05/24
0
0
Java数据结构与算法(第三章简单排序)

如何排序? 这一章中主要是三个比较简单的算法:冒泡排序、选择排序和插入排序。计算机程序不能像人一样通览所有的数据。它只能根据计算机的“比较”操作原理,在同一时间内对来个数据项进行...

小风89
2015/10/22
142
0
数据结构与算法(冒泡排序与选择排序)

1.冒泡排序 冒泡排序是一种简单的排序算法,它重复的遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换,遍历数列的工作是重复的进行直到没有需要交换的元素。 冒泡排序算...

墨痕hz
06/06
0
0
一个Java小白通向数据结构算法之旅(7) - 简单排序总结

前言 昨天双,什么也没买。因为没有想到什么必需的用品,何况也没有钱。身为屌丝的我,只能敲敲代码,写一写总结,岂不美滋滋哉。今天看了《五亿探长雷洛》这部电影,非常喜欢刘德华饰演的雷...

cmazxiaoma
2017/11/12
0
0
八种排序算法效率比较

从刚上大一那会儿学的C语言开始,就已经接触到了不少排序算法,但当时都只是为了完成简单的排序任务而已,而且所给的数据也不够多,所以看不出各个排序算法间的执行效率的优劣。最近有个数据...

lwaif
2015/10/22
2.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
21分钟前
0
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
23分钟前
0
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
51分钟前
2
0
20180921 su与sudo命令、限制root用户通过ssh远程登录

su 命令 用户切换。 su # 切换到root用户su username # 切换到username用户# su 后面加-时,会初始化当前用户的各种环境su - username # 指定用户执行某些命令 su - -c "touch /tm...

野雪球
今天
2
0
Windows 下双 Python 开发环境配置

Windows 下双 Python 开发环境配置作者:老农民(刘启华)QQ: 46715422Email: 46715422@qq.com微信: 46715422 本人曾经在 Windows 下被两个版本环境折腾够呛,现在总结两个 Python...

新疆老农民
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部