1.简单选择排序的基本思想:
第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
2.代码
#include <stdio.h>
int select_sort(int *arr,int size)
{
int ret = 0;
if(arr == NULL)
return -1;
int i = 0;
int j = 0;
int index = 0;
int tmp = 0;
int min = 0;
for (i = 0; i < size-1; ++i)
{
index = i;
min = arr[index];
/* code */
for (j = i+1; j < size; ++j)
{
/* code */
if(arr[j] < min)
{
index = j;
min = arr[j];
}
}
if(index != i)
{
tmp = arr[index];
arr[index] = arr[i];
arr[i] = tmp;
}
}
return ret;
}
int main(int argc, char const *argv[])
{
/* code */
int i = 0;
int arr[] = {3,10,2,15,8,20,1,-1,30,100,20,-23};
select_sort(arr,sizeof(arr)/sizeof(arr[0]));
for (i = 0; i < sizeof(arr)/sizeof(arr[0]); ++i)
{
/* code */
fprintf(stderr, "%d ", arr[i]);
}
fprintf(stderr, "\n");
return 0;
}