我是靠谱客的博主 甜蜜项链,这篇文章主要介绍选择排序(Select_Sort),现在分享给大家,希望可以做个参考。

基本思想

 每一趟从待排序的数据元素中选出最小(最大)的元素,顺序放在待排序的数列最前,直到全部待排序的数据元素全部排完。

特点

 数据结构:数组

 稳定性:不稳定

过程


 初始关键字:『 8,5,2,6,9,3,1,4,0,7 』

 第一趟排序后:0,『5,2,6,9,3,1,4,8,7』

 第二趟排序后:0,1,『2,6,9,3,5,4,8,7』

 第三趟排序后:0,1,2,『6,9,3,5,4,8,7』

 第四趟排序后:0,1,2,3,『9,6,5,4,8,7』

 第五趟排序后:0,1,2,3,4,『6,5,9,8,7』

 第六趟排序后:0,1,2,3,4,5,『6,9,8,7』

 第七趟排序后:0,1,2,3,4,5,6,『9,8,7』

 第八趟排序后:0,1,2,3,4,5,6,7,『8,9』

 第九趟排序后:0,1,2,3,4,5,6,7,8,『9』

 结果:          『 0,1,2,3,4,5,6,7,8,9 』

 

 

          

   排序过程           宏观过程

 

复杂度与辅助空间


 最差时间复杂度:O(n^2)

 最优时间复杂度:O(n^2)

 平均时间复杂度:O(n^2)

 所需辅助空间:O(1)

实现方法


 双重循环,外层i控制当前序列最小(最大)值存放的数组元素位置,内层循环j控制从i+1到n序列中选择最小的元素所在位置k。

源程序
 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void select_sort(int a[],int n) {     for(int i=0;i<n-1;i++)//i为已排序序列的末尾     {         for(int j=i+1;j<n;j++){ if(a[j]<a[i]){ int temp=a[i]; a[i]=a[j]; a[j]=temp; } }                 } }

优化 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void select_sort(int a[],int n) {     int min;     for(int i=0;i<n-1;i++)//i为已排序序列的末尾     {         min=i;         for(int j=i+1;j<n;j++)//未排序序列             if(a[j]<a[min])//找出未排序序列中的最小值                 min=j;         if(min!=i)             swap(a[i],a[min]);//放到已排序序列的末尾,该操作很有可能把稳定性打乱,所以选择排序是不稳定的排序算法     } }  

JAVA版本

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//选择排序 public 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+" "); } } }

 

最后

以上就是甜蜜项链最近收集整理的关于选择排序(Select_Sort)的全部内容,更多相关选择排序(Select_Sort)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部