1. 程式人生 > >八種常見排序演算法的比較和實現

八種常見排序演算法的比較和實現

首先排序演算法大的可以分為:
1、關鍵字比較 2、非關鍵字比較

關鍵字比較
關鍵字比較就是通過關鍵字之間的比較和移動,從而使整個序列有序,
而關鍵字比較的演算法,又可以像下面這樣劃分:
在這裡插入圖片描述

對於排序演算法之間的比較,無異於時間複雜度和空間複雜度。
在這裡插入圖片描述

從上表可以看出:
1、從平均時間效能而言,快速排序最佳,其所需時間最佳,但快速排序在最壞情況下的時間效能不如堆排序和歸併排序。堆排序和歸併之間,當n較大時,歸併排序所需時間省,但是所需的輔助空間卻是最大的。
2、幾種簡單排序中,除了希爾排序外的所有插入排序,氣泡排序,和選擇排序中,直接插入排序最為簡單,並且當序列接近有序時或N值較小時,時間複雜度可以達到O(N),因此在快速排序用了直接插入排序。
3、從演算法的穩定性而言,效能較好的幾種排序演算法都是不穩定的,穩定性就是原序列中有相同的數,排完序後不改變其相對位置。

非比較排序
計數排序
計數排序:時間複雜度:O(N), 空間複雜度O(最大數-最小數)
下面是我自己總結的幾種排序演算法以及實現程式碼:
插入排序:https://blog.csdn.net/aixintianshideshouhu/article/details/83478883
計數排序:https://blog.csdn.net/aixintianshideshouhu/article/details/83714197
希爾排序:https://blog.csdn.net/aixintianshideshouhu/article/details/83714439
選擇排序:https://blog.csdn.net/aixintianshideshouhu/article/details/83714599


氣泡排序:https://blog.csdn.net/aixintianshideshouhu/article/details/83714685
堆排序:https://blog.csdn.net/aixintianshideshouhu/article/details/83714751
歸併排序:https://blog.csdn.net/aixintianshideshouhu/article/details/83714825
快速排序:https://blog.csdn.net/aixintianshideshouhu/article/details/83934484