码迷,mamicode.com
首页 > 编程语言 > 详细

排序(五)选择排序

时间:2018-01-12 20:26:24      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:ima   简单选择   isp   com   class   分享图片   --   有一个   时间   

参考文档:

 

原理:

对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小的记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个时为止

技术分享图片

 

代码实现:

public static void selectSort(int[] num) {
        for(int i=0;i<num.length;i++){
            int k=i;
            for(int j=num.length-1;j>i;j--){
                if(num[j]<num[k]){
                    k=j;
                }
            }
            if(k!=i){
                swap(num, i, k);
            }
        }
    }
 public static void swap(int []arr,int a ,int b){
        int temp=arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }

算法分析:

  • 时间复杂度:O(N2)

简单选择排序的比较次数与序列的初始排序无关。 假设待排序的序列有 N 个元素,则比较次数总是N (N - 1) / 2
而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0
当序列反序时,移动次数最多,为3N (N - 1) /  2
所以,综合以上,简单排序的时间复杂度为 O(N2)

  • 空间复杂度:O(1)
  • 稳定性:不稳定

排序(五)选择排序

标签:ima   简单选择   isp   com   class   分享图片   --   有一个   时间   

原文地址:https://www.cnblogs.com/amei0/p/8277417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!