直接选择排序(Straight Selection Sort)--学习(五)
2014-01-15 14:34
239 查看
选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。
常用的选择排序方法有直接选择排序和堆排序。
直接选择排序(Straight Selection Sort)
1、直接选择排序的基本思想
n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:
①初始状态:无序区为R[1..n],有序区为空。
②第1趟排序
在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
……
③第i趟排序
第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R[i..n](1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。
2、直接选择排序的过程
不太清楚原理最好看看:进行直接选择排序的过程【参见动画演示】
直接选择排序代码如下:
运行效果如下:
常用的选择排序方法有直接选择排序和堆排序。
直接选择排序(Straight Selection Sort)
1、直接选择排序的基本思想
n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:
①初始状态:无序区为R[1..n],有序区为空。
②第1趟排序
在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
……
③第i趟排序
第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R[i..n](1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。
2、直接选择排序的过程
不太清楚原理最好看看:进行直接选择排序的过程【参见动画演示】
直接选择排序代码如下:
#include <iostream> using namespace std; void SelectSort(int arr[], int n); void main() { int ar[]={1,4,5,3,7,8,2}; SelectSort(ar,7); system("pause"); } void SelectSort(int arr[], int n) { /* 三参数:i,min,k, i,j,k 开始都指向 第一个元素 i: 循环完一次,加1 min:比较移动,指向最小元素 k: 一直循环的变量 */ int i,j,k; for (i = 1; i< n; i++) { int min = i; for (j = i+1; j<n; j++) { if (arr[j]<arr[min]) { min = j; } if (j != i) { swap(arr[i],arr[min]); } } cout<<"*********排序"<< i <<"次的结果为"<<endl; for (int g = 0; g < n; g++) { cout<<arr[g]; cout<<","; } cout<<""<<endl; } }
运行效果如下:
相关文章推荐
- 直接选择排序(Straight Selection Sort)
- 算法 - 排序 - 直接选择排序(Straight Selection Sort)
- 直接选择排序(Straight Selection Sort)
- 3. 选择排序—直接选择排序(Straight Selection Sort)
- 算法学习笔记--2. Selection sort & Fibonacci sequence
- PHP简单选择排序(Simple Selection Sort)算法学习
- Internal Sorting: Straight selection sort: Sorting by Selection
- 直接选择排序(Straight Selection Sort)
- 【内部排序】六:直接选择排序(Straight Selection Sort)详解与代码
- 选择排序 selection sort c++
- php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
- 算法学习笔记--5.merge sort & divide-and-conquer
- linux学习入门18——LINUX命令行文本处理工具(linuxcast.net)(grep,sed,diff,tr,cut,wc,sort)
- 学习 TTreeView [8] - AlphaSort、CustomSort、SortType
- Straight Insert Sort
- linux命令学习--sort排序命令
- [原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等
- Linux命令学习手册-sort命令
- qsort和sort学习与比较
- 分针网—每日分享:JavaScript学习笔记:数组的sort()和reverse()方法