目录
分类介绍
#include<stdio.h>
#define MAXSIZE 20
typedef int KeyType;
typedef int InforType;
typedef struct{
KeyType key;
InforType otherinfor;
}RedType;
typedef struct{
RedType R[MAXSIZE + 1];
int length;
}SqList;
插入排序
直接插入排序
原理
从后往前插入,顺便后移
代码实现
加哨兵,减少判断次数
void InsertSort(SqList &L){
for(int i = 2 ; i <= length ; i++){
if(L.r[i].key < L.r[i - 1].key){
L.r[0] = L.r[i];
for(int j = i - 1 ; L.r[0].key < L.r[j].key ; j--){
L.r[j + 1] = L.r[j];
}
L.r[j + 1] = L.r[0];
}
}
}
性能分析
折半插入排序
原理
代码实现
(二分查找多了个移动元素插入的过程)
性能分析
拿直接插入排序最好情况打比方,本来比较一次即可,这次要mid再mid再……
希尔排序
原理
相同元素为一组
代码实现
也就比二分排序这些加了个间隔罢了
性能分析