選擇排序(Selection sort)跟插入排序一樣,也是O(n^2)的復雜度,這個排序方式也可以用我們的撲克牌來解釋。 概念 桌面上有一堆牌,也是雜亂無章的,現在我們想將牌由小到大排序,如果使用選擇排序來做,應該是這樣來做。 遍歷桌面牌堆里的牌,從第一張牌到最后一張,找到牌面最小 ...
摘要 選擇排序的邏輯是先遍歷比較出序列中最大的,然后把最大的放在最后位置。 遵循這個邏輯,用代碼實現時,做到 .減少比較次數之外,這里引入一個新的指標 穩定性, .保證排序過程中的穩定性也是一個優化處理 代碼邏輯 從頭遍歷序列,分別和尾部元素比較,記錄最大的元素坐標 遍歷完成后,和尾部位置交換位置 忽略尾部已經交換的元素,執行 和 步驟 實現 依據邏輯來看,最大值是放在尾部,並放置后,下次循環排 ...
2021-07-29 21:24 0 210 推薦指數:
選擇排序(Selection sort)跟插入排序一樣,也是O(n^2)的復雜度,這個排序方式也可以用我們的撲克牌來解釋。 概念 桌面上有一堆牌,也是雜亂無章的,現在我們想將牌由小到大排序,如果使用選擇排序來做,應該是這樣來做。 遍歷桌面牌堆里的牌,從第一張牌到最后一張,找到牌面最小 ...
今天繼續介紹一種排序算法:選擇排序。 選擇排序的基本思想就是從待排序列中選擇出最小的,然后將被選出元素和序列的第一個元素互換位置(當前默認是升序排列),則互換完成后第一個元素就是整個序列的最小的元素,則一次選擇排序結束。然后我們從剩下的子序列中選擇出最小的,然后將該被選出來的元素和該子 ...
排序基礎 排序方法分兩大類,一類是比較排序,快速排序(Quick Sort)、歸並排序(Merge Sort)、插入排序(Insertion Sort)、選擇排序(Selection Sort)、希爾排序(Shell Sort)、堆排序(Heap Sort)等屬於比較排序方法,比較排序方法 ...
摘要 堆排序需要用到一種數據結構,大頂堆。大頂堆是一種二叉樹結構,本質是父節點的數大於它的左右子節點的數,左右子節點的大小順序不限制,也就是根節點是最大的值。 這里就是不斷的將大頂堆的根節點的元素和尾部元素交換,交換到大頂堆沒有可以被交換的元素為止。后面再說大頂堆的邏輯。 邏輯 ...
摘要 基數排序是進行整數序列的排序,它是將整數從個位開始,直到最大數的最后一位截止,每一個進位(比如個位、十位、百位)的數進行排序比較。 每個進位做的排序比較是用計數排序的方式處理,所以基數排序離不開計數排序。 邏輯 對整數依次從個位數、十位數...進行排序。基數排序非常適合 ...
摘要 桶排序和基數排序類似,相當於基數排序的另外一種邏輯。它是將取值范圍當做創建桶的數量,桶的長度就是序列的大小。通過處理比較元素的數值,把元素放在桶的特定位置,然后遍歷桶,就可以得到有序的序列。 邏輯 創建一定數量的桶(數組或者鏈表)。制定規則將序列中的元素均勻地分布在不同的桶 ...
摘要 看希爾排序需要先想象出一個二維的矩陣,在這個矩陣中,有多少列數據全看步長(一定的規則得到)。處理完之后,就再接着用另一個步長組成矩陣處理。直到步長全部使用完。 這里的巧妙之處就是沒有把序列先處理成二維數組,而是通過與步長配合,依舊在一維的序列中處理。 邏輯 希爾排序 ...
排序算法--選擇排序(Selection Sort)_C#程序實現 排序(Sort)是計算機程序設計中的一種重要操作,也是日常生活中經常遇到的問題。例如,字典中的單詞是以字母的順序排列,否則,使用起來非常困難。同樣,存儲在計算機中的數據的次序,對於處理這些數據的算法的速度和簡便性而言,也具有 ...