震惊!!JAVA中选择排序竟然是这样子的!

      说到选择排序,可能会想起冒泡排序。

        冒泡排序选择排序不禁会问它们有什么区别? 的确, 它们的基本思想是一样的. 都是通过一轮的循环找到所要排序数中的最值(最大值或最小值), 然后将最小(大)值置于底端和顶端,它们的区别主要体现在对其他数(不是最值)的处理上. 

  冒泡排序: 通过相邻的两个数的比较, 根据需要决定是否将两个数互换位置, 然后将比较往前(或往后)推进. 

        例如, 要求从小到大排序. 通过将两个数比较, 将较大的数置换到右边. 如此不断循环将得到最值.

  选择排序: 这个算法从名字可以看出来的意思是从序列中选择出最小的数放在队列头,或者将最大的数放在队列尾也是一样的道理和冒泡排序不同, 选择排序使用标记最值所在位置的方式, 查找最值过程中不移动数位置, 只是在最后将最值置换到顶端.

        注意选择排序与冒泡排序的区别:冒泡排序通过依次交换相邻两个顺序不合法的元素位置,从而将当前最小(大)元素放到合适的位置;而选择排序每遍历一次都记住了当前最小(大)元素的位置,最后仅需一次交换操作即可将其放到合适的位置。

        话不多说来段代码先:



// 选择排序

public static class SelectionSort {

public static void main(String[] args) {

        int[] arr={1,3,2,45,65,33,12};

        System.out.println("交换之前:");

        for(int num:arr){

            System.out.print(num+" ");

        }       

        //选择排序的优化

        for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序

            int k = i;

            for(int j = k + 1; j < arr.length; j++){// 选最小的记录

                if(arr[j] < arr[k]){

                    k = j; //记下目前找到的最小值所在的位置

                }

            }

            //在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换

            if(i != k){  //交换a[i]和a[k]

                int temp = arr[i];

              arr[i] = arr[k];

                arr[k] = temp;

            }   

        }

        System.out.println();

        System.out.println("交换后:");

        for(int num:arr){

            System.out.print(num+" ");



找来了动态图示,可以更加方便的去理解,选择排序。这种比文字更好的去理解。


下面图示选择排序    ↓↓↓:

文中多为转载,来自以下。

【图解算法】排序算法 :https://blog.csdn.net/xiaoping0915/article/details/72615195

Java中的经典算法之选择排序:https://www.cnblogs.com/shen-hua/p/5424059.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一...
    阿里高级软件架构师阅读 3,313评论 0 19
  • 7种常用的排序算法总结 2016.04.30PoetryAlgorithm 排序算法:一种能将一串数据依照特定的排...
    raining_804f阅读 808评论 0 0
  • 抓一把青春,用儿时玩过的泥巴紧紧她裹住,密不疏气。埋藏百万年以后,抛开,方见青春质为化石。只是那时的我,又欢喜在...
    怪蜀黍谈情阅读 433评论 0 6
  • 俩闺蜜聊天, 姐说和老公生气,妹说为啥啊? 因为我花钱,妹说你不对人家挣钱多不容易,不能随便花,知道吗? 姐说,我...
    遇见Qin阅读 241评论 0 0
  • 吾为法曹,初为涨公平正义之气,而匡扶天地浩然正气;公平正义如悬日当空,虽高高在上,却能光辉洒于天地。后渐感...
    苏桦_0476阅读 216评论 0 0