基本数据结构中各种内部排序比较(时间复杂度,空间复杂度和稳定性)
插入排序
插入类的排序就好像是军训时来了一个迟到的同学,这个同学会“插入”到队伍的合适位置。
1.直接插入排序
每趟将一个新的关键字按照值的大小比较插入到已经有序的队伍中,直到所有的关键字都被插入有序序列。
2.折半插入排序
这里的插入方式和直接插入排序一样,区别在比较方法不一样,这里是用折半查找法来查找插入位置。与直接插入相比较,查找位置的效率大大增加,插入时移动次数都是一样的。
3.希尔排序
又叫做缩小增量排序,是将待排序列按照某种规则(增量)分成几个子序列,分别对这几个子序列进行直接插入排序,然后将增量减半,再分为几个子序列进行直接插入排序,当增量减少为1时,可以直接将其理解为直接插入排序,这时所得序列为有序序列。
那直接用直接插入排序不就好了吗,为什么会用到希尔排序,举这样一个例子:7 9 8 5 4 0 6 2 3 1
以增量5分割序列,我们将这个序列分为5个子序列:
子1:7 0
子2: 9 6
子3: 8 2
子4: 5 3
子5: 4 1
将子序列分别进行直接插入排序:
子1:0 7
子2: 6 9
子3: 2 8