#include <stdio.h>
#include <stdlib.h>
void select_sort(int* arr, int nLen)
{
int i=0, j=0, k=0;
int nVal = 0;
for (i=0; i < nLen; i++)
{
for (j=0; j < i; j++)
{
if (arr[i] < arr[j])
{
nVal = arr[i];
for (k=i; k>=j; k--)
{
arr[k] = arr[k-1];
}
arr[j] = nVal;
}
}
}
}
int main()
{
int arrTest[] = {4,9,3,1,5,8,6,7,2,0};
int i = 0;
for (i=0; i < 10; i++)
{
printf("%d ", arrTest[i]);
}
printf("\n\n");
select_sort(arrTest, 10);
for (i=0; i < 10; i++)
{
printf("%d ", arrTest[i]);
}
printf("\n\n");
scanf("%d", &i);
return 0;
}
算法分析:
选择排序是不稳定算法,最好的情况是最好情况是已经排好顺序,只要比较 (n*(n-1))/2次即可,
最坏情况是逆序排好的,那么还要移动 O(n)次,由于是低阶故而不考虑 。选择排序的时间复杂度是 O(n^2)