一、插入排序
1.1 算法思想
每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成
- 给定数组 :[49, 38, 65, 97, 76, 13, 27, 49]

- 第一趟结果 :[38, 49, 65, 97, 76, 13, 27, 49],这里是38与49比较,38比49小,交换位置。



- 第二趟结果 :[38, 49, 65, 97, 76, 13, 27, 49]
-
...
...
... - 第七趟结果 :[13, 27, 38, 49, 49, 65, 76, 97]

1.2 算法实现
-
不带哨兵

-
带哨兵

1.3 效率分析
- 空间复杂度

- 时间复杂度-最好情况

- 时间复杂度-最坏情况

- 总结

1.4 优化--折半插入排序
-
思路 :先用折半查找找到应该插入的位置,再移动元素

-
当low>high时折半查找停止,应将[low,i-1]内的元素全部右移,并将A[0]复制到low 所指位置



...
...
...


-
代码实现

- 对链表进行插入排序

1.5 优化

二、希尔排序
2.1 希尔排序:先追求表中元素部分有序,再逐渐逼近全局有序
- 第一趟



- 第二趟



- 第三趟:整个表已呈现出"基本有序",对整体再进行一次"直接插入排序"

2.2 算法实现

2.3 算法性能分析


2.4 总结
