选择排序
第一步:选择,既按照指定的规则选择出一个元素
第二部: 将选择出的元素和其他元素交换,
在剩下的元素中循环进行。
#include <stdio.h>
void select_sort(int *list, int len);
int main(int argc, char* argv[])
{
int list[20] = {0};
int i, index;
int list1[] = {1,3,89,3,5,67,25,88,55,43,7,9,10};
select_sort(list1, sizeof(list1)/sizeof(list1[0]));
printf("\nThe final result is : \n");
for(i = 0; i < index; i++)
printf("%d ", list[i]);
return 0;
}
void select_sort(int *list, int len)
{
int i, j, k;
int min_tmp;
int min_index;
int temp;
for(i = 0; i < len - 1; i++)
{
min_tmp = 0x7FFFFFFF;
min_index = 0;
for (j = i; j < len; j++)
{
if (list[j] < min_tmp)
{
min_tmp = list[j];
min_index = j;
}
}
temp = list[i];
list[i] = list[min_index];
list[min_index] = temp;
printf("\n i = %d min = %d current state :\n", i, min_tmp);
for(k = 0; k < len; k++)
printf("%d ", list[k]);
}
}
最低空间复杂度O(1)
时间复杂度为O(n^2)