前面我們已經介紹過排序演算法的歸類以及插入排序:鏈結戳這裡:
選擇排序分為選擇排序和堆排序。
選擇排序的思想是先讓最大數和最小數都為陣列第乙個數,遍歷陣列記錄每一趟最大或最小數與第乙個數進行比較。
**:
測試: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 從陣列選出最小的放在第乙個位置上,在從剩餘陣列選出最小放在第二個位置上,以...