选择排序
选择排序原理
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。
算法复杂度
平均时间复杂度为O(n^2)
算法稳定性
举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中两个5的相对前后顺序就被破坏了,所以选择排序是一个不稳定的排序算法。
c++实现代码:
#include<iostream>
using namespace std;
void SelectSort(int* a,int length);
int main()
{
int a[10] = {1,3,2,7,8,5,4,9,6,0};
int len = sizeof(a)/sizeof(a[0]);
SelectSort(a,len);
cout<<"after:"<<endl;
for(int i=0;i<len;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
void SelectSort(int* a,int length)
{
int i,j,k,temp;
for(i = 0;i<length;i++)
{
k=i;
for(j=i+1;j<length; j++)
{
if( a[j] < a[k] )
{
k=j;
}
}
temp = a[i];
a[i] = a[k]; //将最小值赋值给第一位
a[k] = temp;
}
}