我沒有使用HeapSort對已經填充的數組進行排序,但是在數組填滿時使用HeapSort。HeapSort理論?
對於最小值位於頂部的堆,我的理解是當您向堆中插入新值時,您檢查了父節點以查看新子是否較大。如果你不做任何事情,如果不是你檢查並交換需要的樹?
,因爲我實現它不工作這是不對的:
public class HeapSort{
static int[] numbers = new int[] { 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
static int[] array = new int[16];
public static void main(String[] args) {
for (int i = 1; i < 15; i++) {
array[i] = numbers[i];
if (i > 1)
sort(i);
}
for (int i = 1; i < 15; i++) {
System.out.println(array[i]);
}
}
public static void sort(int i) {
int parentLocation = i/2;
int childLocation = i;
int parentValue = array[parentLocation];
int childValue = array[childLocation];
if(parentValue > childValue){
array[parentLocation] = childValue;
array[childLocation] = parentValue;
}
if(parentLocation != 1){
sort(parentLocation);
}
}
}
TIA
如果其anyhelp這是輸出的時候我給它1-15落後:
2
6
3
9
7
5
4
15
12
13
8
14
10
11
但你們都像我一樣難住!
您是否嘗試過通過您的代碼在調試器步進? –
您發佈的代碼看起來正確。 –
幾個小時。我無法弄清楚,我想我已經看了太久。 –