基本排序方法之五——简单选择排序
2015-08-01 17:13
260 查看
简单选择排序(simple selection sort)又称为直接选择排序,属于选择类排序方法。
简单选择排序方法的基本思想:第i趟排序从序列的后n-i+1个记录中选择一个值最小的记录与该n-i+1个记录的最前面那个记录交换位置,即与整个序列的第i个位置上的记录交换位置。如此下去,直到i=n-1,排序结束。简言之,每一趟排序从序列中未排好序的那些记录中选择一个值最小的元素,然后将其与这些为排好序的记录的第一个记录交换位置。
简单选择排序的C语言实现如下:
简单选择排序方法的基本思想:第i趟排序从序列的后n-i+1个记录中选择一个值最小的记录与该n-i+1个记录的最前面那个记录交换位置,即与整个序列的第i个位置上的记录交换位置。如此下去,直到i=n-1,排序结束。简言之,每一趟排序从序列中未排好序的那些记录中选择一个值最小的元素,然后将其与这些为排好序的记录的第一个记录交换位置。
简单选择排序的C语言实现如下:
/************************ 简单选择排序(直接选择排序) ************************ 函数名称:void SimpleSelectionSort(int a[], int len) 参 数:int a[]---待排序的数据 int len---待排序数据的个数,也即数组a的长度 功 能:完成简单选择排序(直接选择排序) 返 回 值:无 说 明:排序好的数据依然存放在数组a中 *****************************************************************************/ void SimpleSelectionSort(int a[], int len) { int i, j, temp; for(i=0; i<len-1; i++) // 最多需要len-1趟排序(最后一个待排序的记录一定是最大值,不需要再比较) { for(j=i+1; j<len; j++) // 每趟排序都需要(必须)len-i次比较,找出无序区中的最小值 { if(a[j]<a[i]) // 将无序区的最小值与无序区的第一个元素交换位置 { temp = a[j]; a[j] = a[i]; a[i] = temp; } } } }
相关文章推荐
- HDU 1823 Luck and Love
- Redis Sentinel初体验
- Android核心基础-7.Android 网络通信-4.获取网络XML,JSON
- 字符串的比较
- zoj 1526 Big Number (N阶乘的位数)
- 51nod1189
- 动态库的动态链接(error while loading shared libraries,cannot open shared object file)
- SVM理解
- java多线程之 ---- 线程死锁
- opencv源码分析(一):imread、cvLoadImage、waitKey、imshow函数
- Leetcode|Find Minimum in Rotated Sorted Array[二分查找]
- C++之sstream格式流(常用于格式转换)
- Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Security policy requir
- CSS基础-20CSS定位-浮动
- 几种常见的开源协议比较
- POI-----POI操作Excel-7、打印区域
- APPCan 深入解析 switchBtn
- 代码重构(转)
- 机器视觉开源代码集合
- [Effective Java]第十一章 序列化