选择排序的基本思想是
以数组arr[n]为例,每一趟(假设目前为第i趟)在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的值作为有序序列中第i个值。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。
简而言之,每次排序给当前位置找最小值。
选择排序的过程分析
第1趟,在待排序记录arr[1]~arr[n-1]中选出最小的记录,将它与r[0]交换;
第2趟,在待排序记录r[2]~r[n-1]中选出最小的记录,将它与r[1]交换;
以此类推,第i趟在待排序记录r[i]~r[n-1]中选出最小的记录,将它与r[i-1]交换,使有序序列不断增长直到全部排序完毕。
选择排序是和冒泡排序差不多的一种排序。和冒泡排序交换相连数据不一样的是,选择排序只有在确定了最小的数据之后,才会发生交换。
我们可以以下面一组数据作为测试:
2, 1, 5, 4, 9
第一次排序: 1, 2, 5, 4, 9
第二次排序: 1, 2, 5, 4, 9
第三次排序: 1, 2, 4, 5, 9
第四次排序: 1, 2, 4, 5, 9
代码:
//算法代码:
#include <stdio.h>
#include <time.h>
void select_sort(int * arr,