排序演算法 選擇排序(時間複雜度n 2,不穩定)

2021-10-02 04:44:11 字數 345 閱讀 4419

選擇排序是給每個位置選擇當前元素最小的,比如給第乙個位置選擇最小的,在剩餘元素裡面給第二個元素選擇第二小的,依次類推,直到第n−1n−1個元素,第nn個元素不用選擇了,因為只剩下它乙個最大的元素了。那麼,在一趟選擇,如果乙個元素比當前元素小,而該小的元素又出現在乙個和當前元素相等的元素後面,那麼交換後穩定性就被破壞了。比較拗口,舉個例子,序列5852958529,我們知道第一遍選擇第1個元素5會和2交換,那麼原序列中兩個5的相對前後順序就被破壞了,所以選擇排序是乙個不穩定的排序演算法。

void select_sort(int r, int n) 

if(min != i) }}

堆排序時間複雜度 堆排序演算法

堆排序是指利用堆積樹這種資料結構所設計的一種排序演算法,它是選擇排序的一種。可以利用陣列的特點快速定位指定索引的元素。堆是乙個優先順序佇列,對於大頂堆而言,堆頂元素的權值最大。將待排序的數組建堆,然後不斷地刪除堆頂元素,就實現了排序。堆排序基本思想 將待排序序列構造成乙個大頂堆,此時,整個序列的最大...

堆排序時間複雜度 堆排序

科班出身的程式設計師就應該研究些演算法和資料結構類的東西,不然,有什麼優勢?堆排序,結構是完全二叉樹,選擇排序的一種,其流程控制和氣泡排序類似,每次選出乙個最大 或最小的元素 排出去,然後下一輪再選出乙個最大 最小的 以此類推,直到剩下乙個不能構成二叉樹為止也排出去,排出來的就是有序的了。只不過每次...

快速排序時間複雜度分析

為了分析快速排序的時間複雜度,請先看下面的主定理 主定理 t n at n b f n 其中 a 1 and b 1 是常量 並且 f n 是乙個漸近正函式,為了使用這個主定理,您需要考慮下列三種情況 快速排序的每一次劃分把乙個 問題分解成兩個子問題,其中的關係可以用下式表示 t n 2t n 2 ...