选择排序

来源:互联网 发布:公共基础知识考试软件 编辑:程序博客网 时间:2024/05/01 22:11

定义

由名称可知,选择排序的操作是通过不断选择待排序列表中的最大(最小)值,由此构成一个有序列表。冒泡排序的每次排序也是选出列表极值,不过其操作是通过不断比较替换相邻元素实现的,选择排序的每次排序是记录列表中的极值下标。由此可知,一个n个元素的列表需要进行(n-1)次选择,才能形成有序列表。

示例

以整型数组{2,9,11,5,7,20,8}为例:

原始列表:2->9->11->5->7->20->8

1次排序:2->9->11->5->7->20->8

2次排序:2->5->11->9->7->20->8

3次排序:2->5->7->9->11->20->8

4次排序:2->5->7->8->11->20->9

5次排序:2->5->7->8->9->20->11

6次排序:2->5->7->8->9->11->20

通过(n-1)次排序,形成有序列表。

参考代码

class t{public static void main(String[] args){int[] arr=new int[]{2,9,11,5,7,20,8};ChooseSort.sort(arr);for(int i:arr){System.out.print(i+" ");}System.out.println();}}class ChooseSort{public static void sort(int[] arr){int i=0,j=0,index=0;int temp=0;for(i=1;i<arr.length;i++){  //比较次数index=i-1;//起始最小值下标for(j=index+1;j<arr.length;j++){if(arr[j]<arr[index]){  //更新最小值下标index=j;}}if(index!=i-1){  //替换元素temp=arr[i-1];arr[i-1]=arr[index];arr[index]=temp;}}}}

总结

选择排序每次选择出列表中极值的下标,将列表分成有序和无序两个部分,通过(n-1)次排序,形成有序列表。平均时间复杂度为O(n^2),因为每次选择出极值下标后,进行元素替换,所以属于不稳定排序。


0 0
原创粉丝点击