直接选择排序
来源:互联网 发布:php 仿京东商城源代码 编辑:程序博客网 时间:2024/06/01 21:19
排序思想
选择排序: 每次从当前待排序的记录中选取关键字最小的记录表,然后与待排序的记录序列中的第一个记录进行交换,直到整个记录序列有序为止。
直接选择排序,也叫简单选择排序。
基本操作:通过n-i次关键字间的比较,从n-i+1个记录中选取关键字最小的记录,然后和第i个记录进行交换,i=1, 2, … n-1 。
排序示例
设有关键字序列为:7, 4, -2, 19, 13, 6,直接选择排序的过程如下图1所示。
算法实现
void simple_selection_sort(int value[], int length){ int i, j, k; int tmp = 0; for(i=0; i<length; i++) { k = i; for(j=i+1; j<length; j++) if(value[j] < value[k]) k = j; if(k != i) /* 记录交换 */ { tmp = value[i]; value[i] = value[k]; value[k] = tmp; } }}
算法分析
整个算法是二重循环:外循环控制排序的趟数,对n个记录进行排序的趟数为n-1趟;内循环控制每一趟的排序。
进行第i趟排序时,关键字的比较次数为n-i,则:
比较次数:
∴ 时间复杂度是:T(n)=O(n2)
空间复杂度是:S(n)=O(1)
从排序的稳定性来看,直接选择排序是不稳定的。
- 选择排序-直接选择
- 【排序】直接选择排序
- 【排序】直接选择排序
- 【排序】直接选择排序
- 选择排序--直接选择排序
- 选择排序 - 直接选择排序
- 选择排序-直接选择排序
- 选择排序-直接选择排序
- 直接选择排序
- 直接选择排序
- 直接选择排序
- Java 直接选择排序
- 直接选择排序举例
- 直接选择排序
- 直接选择排序算法
- 直接选择排序
- 直接选择排序
- 直接选择排序
- iOS 从subview 转换到主视图的方法
- C
- 编程设计模式
- cout<<hex<<u.i<<endl 《程序员》的一道union题目
- webservice二进制文件传输
- 直接选择排序
- Custom Seekbar
- Android 解决ListView 和 ScrollView 共存冲突的问题
- 字符集和编码
- Reading Notes on《Code Complete 2nd》
- Android中3D gallary的实现
- android WebView总结
- Oracle创建dblink报错:ORA-01017、ORA-02063解决
- C/C++中的64位整数(__int64 and long long)