一、算法
1.插入排序:遍历列表的第二个元素到最后一个元素,每次拿后面的元素与前面排好的元素作比较找到合适的插入位置。(采用一个for循环一个while循环)
2.选择排序:首先找出A中最小的元素,将其与 A [ 1 ] A[1] A[1]互换,接着找出A中次最小的元素将其与 A [ 2 ] A[2] A[2]互换。对A中的前 n − 1 n-1 n−1个元素采照该方式继续。(找到A中剩余元素中最小索引的python代码A.index(min(A[K::])
3.归并排序:采用分治的思想,已知拆分A直到剩余两个元素开始比较大小。(有哨兵的代码只需要一个for循环即可,无哨兵的代码需要三个while循环来完成)
4.冒牌排序:反复交换相邻的未按次序排列的元素。(采用两个for循环来完成)
二、时间复杂度
算法 | 最好情况 | 最糟情况 | 平均情况 |
---|---|---|---|
插入排序 | Θ ( n ) \Theta(n) Θ(n) | Θ ( n 2 ) \Theta(n^2) Θ(n2) | Θ ( n 2 ) \Theta(n^2) Θ(n2) |
冒泡排序 | Θ ( n ) \Theta(n) Θ(n) | Θ ( n 2 ) \Theta(n^2) Θ(n2) | Θ ( n 2 ) \Theta(n^2) Θ(n2) |
选择排序 | Θ ( n 2 ) \Theta(n^2) Θ(n2) | Θ ( n 2 ) \Theta(n^2) Θ(n2) | Θ ( n 2 ) \Theta(n^2) Θ(n2) |
归并排序 | Θ ( n l g n ) \Theta(nlgn) Θ(nlgn) | Θ ( n l g n ) \Theta(nlgn) Θ(nlgn) | Θ ( n l g n ) \Theta(nlgn) Θ(nlgn) |