选择排序
一、基本算法思想
从第i趟中排序序列,序列后的n-i+1个元素中选择一个最小j的元素,与该n-i+1进行交换,每一趟都是从未排好的序列中进行选择一个最小的元素与未排好序列的第一个元素进行交换。
二、例如
有这样一个元素序列1,34,56,7,54,63,53,
第一趟:从7个元素中选择最小的一个与第一个元素进行交换
第二趟:从剩下的6个元素中进行选择最小的一个元素与第二个进行交换
。。。。。。。。。以此类推。
void SelectSort(int *array,int len)
{
int i,j;
for(i=0;i<len-1;i++)
{
for(j=i+1;j<len;j++)
{
if(*(array+j)<*(array+i))
{
int tmp;
tmp=*(array+j);
*(array+j)=*(array+i);
*(array+i)=tmp;
}
}
}
printf("SelectSort\n");
}
三、总结
时间复杂度:O(n²)
空间复杂度:O(1)
不稳定排序