数据结构与算法学习-简单排序算法之冒泡排序与选择排序
数据结构与算法学习-简单排序算法之冒泡排序与选择排序
freedwang 发表于2年前
数据结构与算法学习-简单排序算法之冒泡排序与选择排序
  • 发表于 2年前
  • 阅读 32
  • 收藏 0
  • 点赞 1
  • 评论 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();
    }
}
小结:
技术是一个慢慢积累的过程,监督自己学习,慢慢进步,加油!代码不敢保证正确性哈,写的不对的请指教,开源中国的第一篇博客出来了。继续搬砖!!!
共有 人打赏支持
粉丝 0
博文 2
码字总数 1358
×
freedwang
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: