常見的排序演算法 選擇排序

2021-08-20 08:11:16 字數 1202 閱讀 3078

選擇排序

基本思想

每一趟在後面n - i個待排序的資料元素集合中選擇出關鍵碼最小的資料元素,作為有序元素序列的第i個元素。待 到第n - 2趟做完,待排序元素集合中只剩下乙個元素,排序結束。

直接選擇排序

**如下

void swop(int *a, int *b)

void select(int

array, int size)

if (maxpos != end)

swop(&array[maxpos], &array[end]);

--end;}}

我們可以對其在進行優化,一次遍歷找到乙個最大的元素,乙個最小的元素,這樣能節省時間。

void select_op(int

array, int size)

if (maxpos != end)

swop(&array[maxpos], &array[end]);

//如果最小值在末尾,最小值就會被換走,因此要更新minpos的值

if (minpos == end)

minpos = maxpos;

if (minpos != begin)

swop(&array[minpos], &array[begin]);

--end;

++begin;}}

總結

堆排序建立堆:公升序—>大堆,降序—>小堆

具體步驟:

**如下:

void adjustdown(int

array, int size, int parent)

//比較parent和孩子的大小

if (array[parent] < array[child])

else

}}//公升序-->將大堆

void heapsort(int

array, int size)

//排序

while (end >= 0)

}

總結

常見排序演算法 選擇排序演算法

原理 1.選擇排序需要定義三個變數,i表示外層迴圈即for i 0 i 2.當i 0時,min初始值為i,此時min 0。內層迴圈j i 1開始到length 1處結束。當j 1時,比較a j 與a min 如果a j a min 則記錄最小值索引即min j。即if a j a min 當j 1時...

常見排序演算法 直接選擇排序

直接選擇排序是常用選擇排序演算法之一,演算法簡單明瞭,但效能略差。直接選擇排序演算法實現的思路比較簡單,利用雙層迴圈遍歷的方式篩選出最大 或最小 值,並放置到對應的位置即可。陣列 a n 第一次排序 將第乙個元素值作為最小元素,遍歷後面的陣列,如果當前元素小於最小元素,則交換他們,直到遍歷完成,最小...

陣列的常見排序演算法 氣泡排序,選擇排序

2.選擇排序演算法 程式設計中,我們會經常用到陣列的排序,方便統計和查詢。當然面試的時候也會經常問到 下面是兩種比較常見的排序。比較相鄰的兩個值,如果滿足條件就交換值,把小的值移到陣列前面,大的移動到後面 public class arraysortbubble 建立陣列 system.out.pr...