選擇類排序總結

2022-05-03 21:30:09 字數 762 閱讀 5268

選擇類排序總結

所謂選擇類排序的思想就是:從陣列的中選出最大或最小的,通過多次選擇最後達到排序的目的

首先是簡單選擇排序

思想:每趟掃瞄中,選出最小的數字放在最前面,然後從第二個數字開始掃瞄,直到只剩下最後乙個數不需要掃瞄

void easyselect_sort(int a,int n)

}

第三步就是堆排序了,

堆排序利用了大根堆的性質,我們不斷地取出大根堆的根,然後使出維護堆的神術,直到,堆燈盡油枯,只剩下乙個結點,這時候我們的堆排序也完成了,哈哈,有一種,犧牲小堆,完成大排序的錯覺

在實際的排序過程中,我們首先建立乙個堆,然後將根節點與最後乙個元素互換,這樣最後乙個元素就是最大的了,然後使出維護堆的大招,不過這時候維護堆就只維護前面n-1個數,最後的乙個數(也就是最大數)我們把他踢出堆外,直到堆中只剩下乙個元素,那他自然是最小的了,這時候所有元素從小到大排列

void heap_sort(int a,int n)

}

注意,堆排序的最好時間複雜度和最壞時間複雜度都為o(nlog2(n))

空間複雜度為o(1)

堆排序不穩定

可以看出,選擇排序基本上都是不穩定的

選擇類排序

選擇類排序基本思想 每一趟在n i 1 i 1,2,n 1 個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。1.簡單選擇排序 void selectsort recordtype r int n 對記錄陣列r做簡單選擇排序,n為陣列長度 for i 1 i n 1 i k i for j i ...

排序總結 選擇排序

在無序陣列中選出最小的與當前最小的值進行交換 具體步驟 如將第乙個元素看做此時最小值,從第二個元素開始依次向後遍歷找出最小的元素進行交換,此時第乙個位置放置的元素一定是最小的值,在從剩下的無序陣列中找出最小的與第二個元素進行交換,依次往下直到無序陣列只剩下乙個元素為止 public static v...

選擇排序 總結

選擇排序的基本思想 每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排好序的子檔案的最後,直到全部記錄排序完畢。常用的選擇排序方法有直接選擇排序和堆排序。n個記錄的檔案的直接選擇排序可經過n 1趟直接選擇排序得到有序結果。第1趟從r 0 r n 1 中選取最小值,與r 0 交換 第2趟從r 1 ...