八大排序 堆排序

2021-07-23 17:36:28 字數 845 閱讀 5716

堆排序:

利用大頂堆(小頂堆)堆頂記錄的是最大關鍵字(最小關鍵字)這一特性,使得每次從無序中選擇最大記錄(最小記錄)變得簡單。

其基本思想為(大頂堆):

1)將初始待排序關鍵字序列(r1,r2….rn)構建成大頂堆,此堆為初始的無須區;

2)將堆頂元素r[1]與最後乙個元素r[n]交換,此時得到新的無序區(r1,r2,……rn-1)和新的有序區(rn),且滿足r[1,2…n-1]<=r[n];

3)由於交換後新的堆頂r[1]可能違反堆的性質,因此需要對當前無序區(r1,r2,……rn-1)調整為新堆,然後再次將r[1]與無序區最後乙個元素交換,得到新的無序區(r1,r2….rn-2)和新的有序區(rn-1,rn)。不斷重複此過程直到有序區的元素個數為n-1,則整個排序過程完成。

實現**:

#include 

#include

using

namespace

std;

void adustheap(int *arr, int start, int end)

else

break;

}arr[i] = tmp;

}void createheap(int *arr, int n)

}void heapsort(int *arr, int n)

}int main()

; heapsort(arr, sizeof(arr) / sizeof(arr[0]));

for(int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i)

return

0;}

八大排序之堆排序

public class heapsort heapsort num,num.length for int i 0 i 0 i heapadjust array,i,length 從最後乙個元素開始對序列進行調整,不斷的縮小調整的範圍直到第乙個元素 for i length 1 i 0 i priv...

八大排序演算法 堆排序

排序,分為內部排序和外部排序,內部排序是指將資料記錄在記憶體中進行排序,而外部排序因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存,所以稱之為外部排序,我們這裡講的八大排序全部屬於內部排序。堆排序 heapsort 是指利用堆積樹 堆 這種資料結構所設計的一種排序演算法,它是選...

八大排序之堆排序

public static void heapsort int arr for int i 0 i arr.length i int size arr.length 堆中用size表示長度 swap arr,0,size while size 0 用 3 0 1 5 2 畫圖,過程清晰。陣列最後插入...