几种常见排序算法时间复杂度
生活随笔
收集整理的這篇文章主要介紹了
几种常见排序算法时间复杂度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、插入排序
插入排序時間復雜度:
最好:
所有元素已經排好序,只需遍歷一遍,無需交換位置;
最壞:
所有元素逆序排列,遍歷一次需要比較的元素個數每次+1,所以時間復雜度是O(n^2);
平均時間復雜度就是O(n^2)嘍。
2、快速排序
有關快速排序時間復雜度:
最好的時間復雜度和平均時間復雜度就是O(nlogn);
正常情況下是遞歸log2n次,每次遍歷的最壞時間復雜度是n,所以平均時間復雜度是O(nlogn);
最好的時間復雜度就是每次都劃分的很均勻;時間復雜度就是O(nlogn);
最壞的時間復雜度是O(n^2),這種情況就是原先的數據就是排序好,這樣每次只能位移一個數據,
每次劃分的子序列只比上一次劃分少一個記錄,注意兩一個為空。
3、歸并排序
歸并排序時間復雜度:
歸并排序無論在什么情況下,將數組拆分都需要log(n)次;
在歸并時,也需要遍歷比較兩個數組的大小,平均時間復雜度O(n);
所以歸并排序最好最壞時間復雜度都是nlogn;
空間復雜度是O(n);
4、堆排序
堆排序每次都要將一個元素上升到堆頂,然后放回最后,需要n輪,固定不變
每一輪堆調整的時間復雜度是log(n),n依次遞減
所以堆排序的時間復雜度是O(nlogn)
總結
以上是生活随笔為你收集整理的几种常见排序算法时间复杂度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: csi python 摄像头 树莓派_树
- 下一篇: py语法错误与异常处理