目录
各种排序的比较及其实现 ............................................................................................................... 1
1. 插入类排序: ................................................................................................................... 1
1.1 直接插入排序: ....................................................................................................... 1 1.2 折半插入排序: .......................................................................................................... 2 1.3 shell(希尔)排序: .................................................................................................. 2 2.
交换类排序: ...................................................................................................................... 3 2.1 冒泡排序: .................................................................................................................. 3 2.2 快速排序: .................................................................................................................. 4 3.
选择类排序: ...................................................................................................................... 5 3.1 直接(简单)选择排序: ............................................................................................ 5 3.2 堆排序: ................................................................................................................... 6 4.
归并类排序: ...................................................................................................................... 7 4.1 归并排序(2-路归并): .......................................................................................... 7 5.总结........................................................................................................................................ 8 5.1各种排序算法的比较: ................................................................................................ 8
各种排序的比较及其实现
1. 插入类排序:
基本思想:每次将一个待排序的记录,按关键字的大小插入到已排序列的一组记录的适当位置上,直到所有全部待排序列都插入为止。
1.1直接插入排序:
每次将一个待排序的记录,插入到已排序列的一组记录的适当位置上,每次使有序序列增加1个长度。 【算法特点】
1. 稳定排序
2. 可以用于链表和顺序表
3. 适用于初始记录基本有序的情况;当初始无序时、n较大时,移动次数较多,不宜
采用 代码:
voidInsertSort(ElemTypeA[], intn) {
inti, j;
for(i=2;i<=n;i++)//依次将A[2]~A[n]插入到前面已排序序列
1
}
if (A[i].key A[0] = A[i];//复制为哨兵,A[0]不存放元素