Assignment 5: heap sort solve
This commit is contained in:
parent
f7b209a844
commit
afb273d714
@ -4,20 +4,43 @@ import java.io.*;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class Assignment {
|
public class Assignment {
|
||||||
|
|
||||||
public static int[] heapify(int[] heap, int sizeA, int index) {
|
public static int[] heapify(int[] heap, int sizeA, int index) {
|
||||||
// Fill in here
|
// check parent and children to find the largest node
|
||||||
|
int largest = index;
|
||||||
|
int left = 2 * index + 1;
|
||||||
|
int right = 2 * index + 2;
|
||||||
|
|
||||||
|
if (left < sizeA && heap[left] > heap[largest]) largest = left;
|
||||||
|
if (right < sizeA && heap[right] > heap[largest]) largest = right;
|
||||||
|
|
||||||
|
// if largest isn't the parent, swap with the largest child and recursively heapify
|
||||||
|
if (largest != index) {
|
||||||
|
final int tmp = heap[index];
|
||||||
|
heap[index] = heap[largest];
|
||||||
|
heap[largest] = tmp;
|
||||||
|
return heapify(heap, sizeA, largest);
|
||||||
|
}
|
||||||
return heap;
|
return heap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int[] buildHeap(int[] arr, int sizeA) {
|
public static int[] buildHeap(int[] arr, int sizeA) {
|
||||||
// Fill in here
|
for (int i = sizeA / 2; i > 0; i--) {
|
||||||
return heapify(arr, sizeA, 1);
|
heapify(arr, sizeA, i);
|
||||||
|
}
|
||||||
|
return heapify(arr, sizeA, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int[] heapSort(int[] arr, int sizeA) {
|
public static int[] heapSort(int[] arr, int sizeA) {
|
||||||
// Fill in here
|
arr = buildHeap(arr, sizeA);
|
||||||
return buildHeap(arr, sizeA);
|
// for each element
|
||||||
|
for (int i = 1; i < sizeA; i++) {
|
||||||
|
// swap heap top (largest element) with the last array element and reheapify
|
||||||
|
int top = arr[0];
|
||||||
|
arr[0] = arr[sizeA - i];
|
||||||
|
arr[sizeA - i] = top;
|
||||||
|
arr = heapify(arr, sizeA - i, 0);
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void run(String inputPath) {
|
public static void run(String inputPath) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user