使用python实现排序算法中的插入排序。
算法步骤:
step 1: 对于第i个数,将它与前面的数字进行比较,如果小于前面的数,那就调换它们的位置,如果不小于前面的数,那就不动。依次进行比较,直到它不小于前面的数或者前面没有数。
step 2: 从第二个数开始依次执行step 1。
算法举例:
对于【3,2,1,5,4】排序
第一层循环: 待比较数字为2
比较【3,2】:2<3,调换为【2,3】
发现前面没有数字,停止,此时【2,3,1,5,4】
第二层循环: 待比较数字为1
比较【3,1】:1<3,调换为【1,3】
比较【2,1】:1<2,调换为【1,2】
发现前面没有数字,停止,此时【1,2,3,5,4】
第三层循环: 待比较数字为5
比较【3,5】:5>3,停止,此时【1,2,3,5,4】
第四层循环: 待比较数字为4
比较【5,4】:发现4<5,调换为【4,5】
比较【3,4】:发现3<4,停止,此时【1,2,3,4,5】
算法评价:
我们可以发现插入排序是不需要额外的空间的,所以它的空间复杂度是 O ( 1 ) O(1) O(1)。选择排序也是循环的嵌套,其最坏的时间复杂度是 O ( n 2 ) O(n^2) O(n2),但是其最好的时间复杂度是 O ( n ) O(n) O(n)。
方法< |
---|