排序
一种重要操作,将数据元素(记录)的任意序列,排列成按关键字有序的序列。
待排序记录数量不同,将排序方法分为内部排序、外部排序
内部排序分类:插入排序、交换排序、选择排序、归并排序、计数排序
插入排序
直接插入排序
算法思想:
将待排序的记录Ri,插入到已排好序的记录表R1, R2 ,…., Ri-1中,得到一个新的、记录数增加1的有序表。 直到所有的记录都插入完为止。
排序过程演示
算法实现
算法分析
空间复杂度:O(1)
时间复杂度:
在最好的情况下(待排序记录已经有序,即正序),此时每次循环中只需要比较关键字,次数为n-1次,而不需要移动元素
在最坏的情况下(待排序记录逆序),比较次数和移动元素的次数均达最大值,约为n*n(n-1)
插入排序的时间复杂度为O(n2)
希尔排序
又称“缩小增量排序”,对直接插入排序进行改进的方法
基本思想:将整个待排序列分割成若干子序列分别进行