选择排序
来源:互联网 发布:憨豆特工影评知乎 编辑:程序博客网 时间:2024/06/05 05:19
选择排序的思想是:对含有N个整数的数组进行N-1趟排序,每一趟都将从待排序数据中选取最小的数据放在已排好序的数列最后。
以数组 [23 15 27 18 21] 为例,
第一趟排序后:15 [23 27 18 21]
第二趟排序后:15 18 [23 27 21]
第三趟排序后:15 18 21 [27 23]
第四趟排序后:15 18 21 23 27
如上面例子所示,第一趟排序中,找到了最小元素15,将其单独拿出来作为一个已经排好序的数列;第二趟排序从剩余待排序数列[23 27 18 21]中再次找到最小元素18,将其放入排好序的数列15之后;同理进行第三、第四趟排序。
用程序实现该排序,我们需要定义一个K值代表每一次待排序数列最小值的位置,每一趟排序结束后,调换K处元素和待排序数列第一个元素的位置。
下面是C++写的排序代码:
#include<iostream>using namespace std;//交换数组中两个元素位置void swap(int *p,int *q){int tmp=0;tmp=*p;*p=*q;*q=tmp;}//选择排序void sort(int *p,int n){for(int i=0;i<n-1;i++){int k=0;for(int j=i+1;j<n;j++){if(*(p+i+k)>*(p+j)){k=j-i;}}if(*(p+i)>*(p+i+k)){swap(p+i,p+i+k);}}}//输出数组void print(int *p,int n){for(int i=0;i<n;i++){cout<<*p<<endl;p++;}}void main(){int num[10]={11,37,26,9,42,27,50,46,16,28};int *p=num;sort(p,10);print(p,10);}程序输出结果如下:
0 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- json-lib.jar使用方法详解(动态从后台获取Javascript函数)
- 如何在命令行模式下查看Python帮助文档---dir、help、__doc__
- <读书笔记>Windows内核安全 —— 第四章 键盘的过滤
- 有点意思的C/C++问题及解答:6-10
- SurF特征点检测
- 选择排序
- MySql日期和时间函数(1)
- Android自学笔记 第四天(下)
- 【OpenCV】图像几何变换:旋转,缩放,斜切
- STL
- 目录和文件的的rwx属性
- (i++)+(i++)与(++i)+(++i)
- hdu 1231 最大连续子序列
- MyEclipse设置JAVA选中高亮显示