-
常见算法时间复杂度 -
选择排序基本思想
基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 优点:移动数据的次数已知(n-1 次); 缺点:比较次数多。
- 代码实现
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void printArray01(int array[], int len)
{
int i = 0;
for(i=0; i<len; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
void swap01(int array[], int i, int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
void SelectionSort(int array[], int len)
{
int i = 0;
int j = 0;
int k = -1;
for(i=0; i<len; i++)
{
k = i;
for(j=i+1; j<len; j++)
{
if( array[j] < array[k] )
{
k = j;
}
}
swap01(array, i, k);
}
}
int main()
{
int array[] = {12, 5, 433, 253};
int len = sizeof(array) / sizeof(*array);
printArray01(array, len);
SelectionSort(array, len);
printArray01(array, len);
system("pause");
return 0;
}
|