基本排序算法 - 选择 插入 希尔

选择排序

选择排序是最基本的排序算法。比较像冒泡排序,但是冒泡排序在已经排序的情况下(设置flag跳出循环),只需要O(N),但是选择排序需要O(N2)

基本思想:

遍历,寻找数组中最小的元素,然后放到数组最前面。

递归这个过程。

复杂度:

O(N^2)

插入排序

选择排序的改进。可以看到选择排序每次都需要遍历整个数组,找到最小值。

插入排序不需要每次遍历寻找最小值,而是每次在已经排序的数组中,找到自己的位置。(有点像整理自己的扑克牌)

整个数组 VS 已经排序的数组,遍历次数大致为2倍的关系。所以,如果测试性能的话,一般插入排序的性能 ~= 选择排序的2倍。

基本思想:

针对每个没有排序的元素,在已经排序的数组中,找到自己的位置,并插入。(整理扑克牌)

复杂度:

O(N^2) (但是只有插入排序的1/2倍)

 

希尔排序

插入排序的改进。插入排序在逆序的时候,性能会特别差,因为对于最小的元素,插入时,需要移动整个数组 -1 次,即N - 1次。

 

posted @ 2020-12-10 15:21  xuyv  阅读(73)  评论(0编辑  收藏  举报