首页 > 编程语言 > 详细

选择排序

时间:2020-07-08 21:27:26      阅读:61      评论:0      收藏:0      [点我收藏+]

选择排序(交换排序):

  选择最小的,从前往后排,每一轮找出(除前面排好的)剩下元素中最小的值与当前值进行交换。

  由于找的是最小的数,如果有两个相同的最小数,那么靠后数就会被交换到前面,所以显然选择排序是不稳定的

  比较简单,看了前面的冒泡排序,链表也没必要了,直接上代码:

  

 public static void selectSort(int[] nums) {
         for (int i = 0; i < nums.length - 1; i++) {
             int min = nums[i];//定义最小值
             int index = i;//记录最小值的索引位置
    //下面就是寻找i+1到length中最小的值
             for (int j = i + 1; j < nums.length; j++) {
                 if (nums[j] < min) {//寻找最小的数
                     min = nums[j];
                     index = j;//最小值的索引
                 }
             }
             if (index != i) {//如果当前值不是最小值,那么就将它与最小值交换
                 nums[index] = nums[i];
                 nums[i] = min;
             }
         }
     }

测试:

  8万随机数(0—1000万)排序时间:  

  after-before=4700ms

  时间复杂度为:均为O(n2)         空间复杂度:O(1)     该算法不稳定

选择排序

原文:https://www.cnblogs.com/taichiman/p/13268894.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!