算法与数据结构(选择排序)
選擇排序 Select Sort
從待排序序列中選出最小(或最大)元素,放入新建的有序序列中,并將其從原無序序列移除。不斷重復直到無序序列最終沒有元素剩余
選擇排序規則:
實現:
從無序序列中找到最小元素,將其和無序序列首位的元素交換(此時首位元素屬于有序序列,剩下的元素屬于無序序列)
重復步驟,直到無序序列沒有元素剩余
時間復雜度分析:
平均時間復雜度:T(n)=n?1+n?2+?+2+1=n(n?1)2=O(n2)T(n) = n-1 + n-2 + \dots + 2 + 1 = \frac{n(n-1)}{2} = O(n^2)T(n)=n?1+n?2+?+2+1=2n(n?1)?=O(n2)
最優時間復雜度:列表正序,依然需要遍歷列表全部比較,所以還是 O(n2)O(n^2)O(n2)
最壞時間復雜度:列表倒序,需要遍歷列表全部比較,因此為 O(n2)O(n^2)O(n2)
空間復雜度:
由于只用到了常數個臨時變量,且這個常數和序列大小無關,所以空間復雜度為 O(1)O(1)O(1)
穩定性:
在選擇排序的過程中,可能出現等值元素順序交換的情況,例如:
列表 [ 5, 3, 4, 6, 5, 2],在排序時會將 2 和 第一個 5 交換,此時兩個 5 的順序改變
所以選擇排序是不穩定的
相關章節
第一節 簡述
第二節 稀疏數組 Sparse Array
第三節 隊列 Queue
第四節 單鏈表 Single Linked List
第五節 雙向鏈表 Double Linked List
第六節 單向環形鏈表 Circular Linked List
第七節 棧 Stack
第八節 遞歸 Recursion
第九節 時間復雜度 Time Complexity
第十節 排序算法 Sort Algorithm
第十一節 冒泡排序 Bubble Sort
第十二節 選擇排序 Select Sort
第十三節 插入排序 Insertion Sort
第十四節 冒泡排序,選擇排序和插入排序的總結
第十五節 希爾排序 Shell’s Sort
第十六節 快速排序 Quick Sort
第十七節 歸并排序 Merge Sort
總結
以上是生活随笔為你收集整理的算法与数据结构(选择排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法与数据结构(冒泡排序)
- 下一篇: 算法与数据结构(插入排序)