排序演算法之選擇排序 直接選擇排序與堆排序

2021-09-27 12:51:07 字數 968 閱讀 5945

1.1.1 設待排序記錄放置在a[n]陣列中,第一趟從a[0]開始,通過n-1次比較,從n個記錄中選出關鍵字最小的記錄,記為n[k],並交換a[0]與a[k]。

1.1.2 第二趟從a[1]開始,通過n-2次比較,從n個記錄中選出關鍵字最小的記錄,記為n[k],並交換a[1]與a[k]。

1.1.3 以此類推,經過n趟,排序完成。

for(int i=0;i1.4.1 時間複雜度o(n2),空間複雜度o(1)

1.4.2 是穩定排序

2.1.1 建初堆,從最後乙個不為樹的葉結點開始依次調整堆,知道成為乙個大根堆。

2.1.2 調整堆,假設a[s+1...m]已經是堆得情況下,將a[s...m]調整為堆,比較2s+1與2s+2的大小(陣列以0開始),取較大值,與a[s]進行比較,若a[s]較大,則結束。否則,交換a[s]與a[2s+1]和a[2s+2]中的較大者,並繼續進行上述操作。

2.1.3 推排序,將堆頂元素和末尾元素進行交換,並調整堆。再將堆頂元素和倒數第二個元素進行交換,並調整堆。重複上述操作至排序完成。

public class heapsort

a[s]=temp;

}//建初堆

public static void createheap(int a)

}//堆排序

public static void hsort(int a)

}public static void main(string args) ;

hsort(a);

for(int i=0;i2.4.1 時間複雜度o(nlogn) 空間複雜度o(1)

2.4.2 是不穩定排序

排序演算法 之選擇排序(直接選擇排序,堆排序)

一 排序演算法分為 1.插入排序 直接插入排序 希爾排序 2.選擇排序 直接選擇排序 堆排序 3.交換排序 氣泡排序 快速排序 4.歸併排序 二,選擇排序 直接選擇排序 1.演算法 選擇排序 直接選擇排序 void selectsort int a,size t n if a child a par...

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

直接選擇排序是將整個待排序序列分為兩部分,一部分為有序 最開始有序序列為空 一部分為無序 最終無序序列為空 有序序列中的數都不大於無序序列中的數。它的過程是每次都在無序中尋找乙個最小的數,然後將其與無序序列的第乙個數交換,並併入有序序列。則有序序列長度增1,無序序列長度減1。比如 對r 0 n 陣列...

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

直接選擇排序是將整個待排序序列分為兩部分,一部分為有序 最開始有序序列為空 一部分為無序 最終無序序列為空 有序序列中的數都不大於無序序列中的數。它的過程是每次都在無序中尋找乙個最小的數,然後將其與無序序列的第乙個數交換,並併入有序序列。則有序序列長度增1,無序序列長度減1。比如 對r 0 n 陣列...