排序演算法之選擇排序

2021-09-23 23:48:02 字數 723 閱讀 6795

選擇排序的基本思想是,每一步選擇乙個最值,從這個角度講其實氣泡排序也是一種選擇排序。

主要型別有

簡單選擇排序

每一步選擇乙個最小值,放進已排好的陣列中,然後接著從待選擇陣列中選。**如下

void

selectsort

(int a,

int n)}if

(max != i)

}}

堆排序, 堆是乙個完全二叉樹,根節點為最值,堆排序利用這個特性來排序。主要分兩個階段

void

heapadjust

(int a,

int index,

int n)

else

break

;//符合性質則退出}}

void

heapsort

(int a,

int n)

}

演算法複雜度分析 演算法

最差時間複雜度

平均時間複雜度

穩定性空間複雜度

直接選擇

o(n^2)

o(n^2)

穩定o(1)

堆排序o(nlogn)

o(nlogn)

不穩定o(1)

堆排序和快速排序一樣,基於分治思想,log以2為底,一遍找元素o(n),一遍找位置o(logn)

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...

排序演算法之選擇排序 選擇排序 堆排序

直接選擇排序 如下 下面 是一次迴圈同時挑選出最大和最小數,並將其與左右交換 選擇排序 void selectionsort int a,int len swap a min a left 如果最大數的下標在為left,證明要交換的最大數已經被 換到min小標所表示的位置,只需要將right和min...

排序演算法之選擇排序

選擇排序 在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n 1個資料,找出其中最小的數值與第二個元素交換.第n 1趟遍歷剩下的2個資料,找出其中最小的數值與第n 1個元素交換,至此選擇排序完成。平均時間複雜度 o n2 空間複雜度 o 1 用於...