-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSemi4.java
More file actions
39 lines (38 loc) · 1.16 KB
/
Semi4.java
File metadata and controls
39 lines (38 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.Arrays;
public class Semi4 {
static void swap(int whatAreChangeInd,int whatDoChangeInd,int[] arr){
int temp = arr[whatAreChangeInd];
arr[whatAreChangeInd] = arr[whatDoChangeInd];
arr[whatDoChangeInd] = temp;
}
static void sorting(int[] arr) {
int len = arr.length;
for (int i = len / 2 - 1; i >= 0; i--) {
createHeap(arr, len, i);
}
for (int i = len - 1; i >= 0; i--) {
swap(0,i,arr);
createHeap(arr, i, 0);
}
}
public static void main(String[] args) {
int[] array = {32, 524, 3, 65, 43, 3, 5, 7, 7, 5, 43, 3, 25, 5, 4};
sorting(array);
System.out.println(Arrays.toString(array));
}
static void createHeap(int[] arr, int len, int index) {
int max = index;
int left = 2 * index + 1;
int right = 2 * index + 2;
if (left < len && arr[left] > arr[max]) {
max = left;
}
if (right < len && arr[right] > arr[max]) {
max = right;
}
if (max != index) {
swap(index,max,arr);
createHeap(arr, len, max);
}
}
}