演算法 排序演算法第二講 選擇排序

2021-08-03 20:00:13 字數 1320 閱讀 2394

前面我們已經介紹過排序演算法的歸類以及插入排序:鏈結戳這裡:

選擇排序分為選擇排序和堆排序。

選擇排序的思想是先讓最大數和最小數都為陣列第乙個數,遍歷陣列記錄每一趟最大或最小數與第乙個數進行比較。

**:

void selectsort(int *a, size_t n)

swap(a[min], a[left]);

if (max == left)

max = min;

swap(a[max], a[right]);

++left;

--right;}}

測試:

int main()

; int sz = sizeof(a) / sizeof(a[0]);

selectsort(a, sz);

for (int i = 0; i < sz; i++)

cout

<< endl;

system("pause\n");

return

0;}

執行結果:

堆排序是將乙個陣列看成一棵完全二叉樹,建立小堆,從倒數第乙個非葉子節點開始,進行向下調整演算法。

**:

void adjustdwon(int* a, size_t root, size_t n)

if (a[child] > a[parent])

else

}}// n*lgn

void heapsort(int* a, size_t n)

size_t end = n - 1

;while (end > 0)

}

測試:

int main()

; int sz = sizeof(a) / sizeof(a[0]);

heapsort(a, sz);

for (int i = 0; i < sz; i++)

cout

<< endl;

system("pause\n");

return

0;}

執行結果:

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

內部排序 全部資料可同時放入記憶體進行的排序。外部排序 檔案中資料太多,無法全部調入記憶體進行的排序。定義 設有記錄序列 其相應的關鍵字序列為 若存在一種確定的關係 kx k y kz 則將記錄序列 排成按關鍵字有序的序列 的操作,稱之為排序。關係是任意的,通常使用小於 遞增 大於 遞減 等關係。穩...

排序演算法 二 選擇排序

之前給大家分享了排序演算法裡面比較簡單的氣泡排序,今天來分享一下選擇排序的演算法 選擇排序的思想 1.以公升序為例 在一組數中選出最大的數放到第乙個位置,或者選出最小的數放到最後乙個位置,2.在選取剩餘元素的最大數放到第二個位置,或選出剩餘元素中的最小值放到倒數第二哥位置,3.依次往下選取,直到遍歷...

排序演算法 二 選擇排序

演算法實現 selectsort.c include void selectsort int arr,int len if min i for k 0 k演算法思想 保證將要成為有序範圍內的那個位置的值是無序裡的最小值。ex 從陣列選出最小的放在第乙個位置上,在從剩餘陣列選出最小放在第二個位置上,以...