举例:
选择排序的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,按顺序放在已排序的记录序列的最后,直到全部排完为止。
括号内为已排完序的,每一趟结束待排序记录的个数就少一个。
算法属性:
时间复杂度为O(n^2)
空间复杂度为O(1)
根据“交换记录” 的策略不同可是稳定的排序,也可能是不稳定的排序。
移动记录次数较少,当每一记录占用的空间较多时,此方法比直接插入排序快。
另外:简单选择排序和堆选择排序不受初始序列顺序影响。
代码如下:
#include<stdio.h>
#define MAXSIZE 20
typedef int KeyType;
typedef int InfoType;
//记录类型
typedef struct {
KeyType key;
InfoType otherinfo;
}RedType;
//顺序表类型
typedef struct {
RedType r[MAXSIZE + 1]; //r[0]闲置或作哨兵
int length