Yığın ayırma yığın & çalışıyorum.
Bir dizi var:
Yığını, kod ve kalem kullanarak oluşturmaya çalışırken, iki çeşit yığınla karşı karşıya.
Öbek oluştururken benzersiz bir yığın mı?
kodu kullanarak, MaxHeap: 11 9 7 6 8 3 2 1
ekleme teorisi kullanılarak, MaxHeap: 11 9 7 8 6 3 2 1
i' kodu
int[] DoHeapSort(int[] value) {
int length = value.length;
for (int i = length/2; i > 0; i--) {
maxHeapify(value, i, length);
}
//print Heap
for(int i = 0 ; i<value.length; i++)
System.out.println(value[i]);
return (value);
}
void maxHeapify(int[] array, int index, int heapSize) {
int left = index * 2;
int right = left + 1;
int max = index;
if (left <= heapSize && array[left - 1] > array[index - 1]) {
max = left;
}
if (right <= heapSize && array[right - 1] > array[max - 1]) {
max = right;
}
if (max != index) {
swap(array, index - 1, max - 1);
maxHeapify(array, max, heapSize);
}
}
Teori, bu durumda, yığın için bir dizi oluşturmak ve sırayla 11 6'dan eklemek: kullanıyorum. (Öte yandan, kod yerindedir)
Her iki maxHeap sonucu yığın tanımını tatmin eder. Öyleyse Heap eşsiz değil mi? Teşekkürler
Teşekkürler. Daha sonra hangisi önerilen yöntem? – user3595632
@ user3595632: O (n) yerinde algoritma ile giderdim. Bu her zamanki uygulama. – rici
O (n)? ... Bildiğim gibi, bina yığını O (nlogn) ......? Daha kötüsü, değil mi? – user3595632