मैं ढेर & ढेर सॉर्टिंग का अध्ययन कर रहा हूं।
एक सरणी है: arr[8] = {6,9,3,1,8,7,2,11}
जब मैं कोड और पेंसिल का उपयोग करके ढेर बनाने की कोशिश कर रहा हूं, तो मुझे दो प्रकार के ढेर का सामना करना पड़ा।
ढेर का निर्माण करते समय, ढेर अद्वितीय है?
कोड का उपयोग कर, MaxHeap: 11 9 7 6 8 3 2 1
प्रविष्टि सिद्धांत का उपयोग कर, MaxHeap: 11 9 7 8 6 3 2 1
कोड है कि मैं '
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);
}
}
थ्योरी, इस मामले में, ढेर के लिए एक और सरणी बना सकते हैं और क्रम में 11 6 से सम्मिलित करें: का उपयोग कर रहा हूँ। (दूसरी ओर, कोड जगह में ढेर है)
दोनों maxHeap परिणाम संतुष्ट ढेर परिभाषा। तब हीप अद्वितीय नहीं है? धन्यवाद
धन्यवाद। फिर, किसको पुनः संयोजित विधि है? – user3595632
@ user3595632: मैं ओ (एन) इन-प्लेस एल्गोरिदम के साथ जाऊंगा। यह सामान्य कार्यान्वयन है। – rici
ओ (एन)? ... जैसा कि मुझे पता है, ढेर का निर्माण ओ (nlogn) ...... है ?? बदतर मामले में, है ना? – user3595632