選擇排序
基本思想
每一趟在後面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...