选择排序

大二下学期重新学习c++
写了一个选择排序
选择排序(Selection sort)是一种简单直观的排序算法

它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。



如下图





1
#include"iostream" 2 #define N 10 3 using namespace std; 4 void excha(int &a,int &b); 5 int main(){ 6 int a[N]={0,2,1,3,4,5,6,7,8,9}; 7 int min; 8 int i,j; 9 for(int i=0;i<N;i++){ 10 min=i; 11 for(int j=i+1;j<N;j++){ 12 if(a[j]<a[min]) 13 min=j; 14 } 15 excha(a[i],a[min]); 16 } 17 for(int i=0;i<N;i++){ 18 cout<<a[i]<<" "; 19 } 20 return 0; 21 } 22 void excha(int &a,int &b){ 23 int c; 24 c=a; 25 a=b; 26 b=c; 27 }


选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

运行时间和输入无关 ----为了找出最小的元素而扫描一遍数组并不能为下一边扫描提供什么信息。 这种性质在某些情况下是缺点,因为使用选择排序的人可能会发现,一个已经有序的数组或者是主键全部相等的数组和一个元素随机排列的数组所用的排序时间一样长



选择排序还是很简单的,重点就是通过每次扫描,找到最小值,通过交换,达成排序目的。

 

posted @ 2016-03-03 22:22  Hutonm  阅读(219)  评论(0编辑  收藏  举报