排序(之选择排序)
选择排序是不稳定排序,平均算法复杂度和最坏算法复杂度为:O(n^2);空间复杂度为O(1);
稳定性说明:
举个例子,序列5 8 5 2 9, 我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法
#include<stdio.h>void select_sort(int a[],int n){int i,j,pos,tmp;for(i=0;i<n;i++){pos=i;for(j=i+1;j<n;j++)//选取第i趟的最小元素{if(a[pos]>a[j]){pos=j;}}tmp=a[pos];a[pos]=a[i];a[i]=tmp;}}void main(){int a[]={49,38,65,97,76,13,27,49};int n=sizeof(a)/sizeof(a[0]);select_sort(a,n);for(int i=0;i<n;i++){printf("%d\n",a[i]);}}