-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathheapsort.java
More file actions
40 lines (35 loc) · 1.05 KB
/
heapsort.java
File metadata and controls
40 lines (35 loc) · 1.05 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
40
import java.util.Arrays;
public class heapsort {
public static void main(String[] args) {
int[] number = new int[]{4,7, 8, 2, 3, 10, 6, 5};
sort(number);
for (int a : number) System.out.print(a + " ");
}
public static void sort(int[] number) {
for(int i = number.length / 2 - 1; i >=0 ; i--) {
helper(number, i, number.length);
}
for(int i = number.length - 1; i > 0; i--) {
swap(number, 0, i);
helper(number, 0, i);
}
}
public static void helper(int[] number, int i, int n) {
int temp = number[i];
for(int k = 2 * i + 1; k < n; k = 2 * k + 1) {
if(k + 1 < n && number[k] < number[k + 1]) {
k++;
}
if(number[k] > temp) {
number[i] = number[k];
i = k;
}
}
number[i] = temp;
}
public static void swap(int[] number, int i, int j) {
int temp = number[i];
number[i] = number[j];
number[j] = temp;
}
}