- 插入排序
void InsertSort (int* a, int n){
int i = 0;
for (i=0;i<n-1;i++){
int end = i;
while (end>=0 && end<n-1){
if (a[end]>a[end+1]){
a[end+1] = a[end];
end--;
}
else{
break;
}
a[end+1] = tmp;
}
}
- 希尔排序
希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数gap,把待排序文件中所有记录分成个组,所有距离为gap的记录分在同一组内,并对每一组内的记录进行排序。然后,重复上述分组和排序的工作。当到达gap=1时,所有记录在统一组内排好序。
希尔排序可以看作是对插入排序的优化。
void ShellSort (int* a, int n){
int gap = n;
int i = 0;
while (gap>0){
gap = gap/3+1;
for (i=0;i<=n-gap-1;i++){
int end = i;
int tmp = a[end+gap];
while (end>=0){
if (a[end]>a[end+gap]){
a[end+gap] = a[end];
end -= gap;
}
else{
break;
}
a[end+gap] = tmp;
}
}
}