排序算法之简单选择排序

来源:互联网 发布:淘宝改库存影响排名吗 编辑:程序博客网 时间:2024/05/01 06:53

基本思想:

将初始序列(A[0]~A[n-1])作为待排序序列,第一趟在待排序序列(A[0]~A[n-1])中找最小值元素,与该序列中第一个元素A[0]交换,这样子序列(A[0])有序;下一趟排序在待排序子序列(A[1]~A[n-1])中进行。第 i 趟排序,A[i-1]~A[n-1] 中,找到最小元素,与该子序列中第一个元素 A[i-1] 交换。经过n-1趟排序后使得初始序列有序。


简单选择排序示例:



代码:

void SelectSort(int A[],int n)//简单选择排序{int small;for(int i=0; i<n; i++){small=i;for(int j=i+1; j<n; j++){if(A[j]<A[small])small=j;}swap(A[i],A[small]);}}

时间复杂度分析:

该算法和初始序列排列无关。无论初始序列如何,该算法都必须执行n-1趟,每趟执行n-i-1次关键字的比较,

这样总的比较次数为:


因此,简单选择排序的最好、最坏和平均时间复杂度都为O(n^2)。

此外,该排序算法经过一趟排序可以确定一个元素的最终位置。简单选择排序是不稳定的排序算法。


参考资料:

《数据结构》  陈慧楠著 人民邮电出版社

0 0
原创粉丝点击