forked from TheAlgorithms/JavaScript
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHeapSortV2.js
More file actions
Latest commit
42 lines (32 loc) · 772 Bytes
/
Copy pathHeapSortV2.js
File metadata and controls
42 lines (32 loc) · 772 Bytes
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
41
42
letarrayLength=0
/* to create MAX array */
functionheapRoot(input,i){
constleft=2*i+1
constright=2*i+2
letmax=i
if(left<arrayLength&&input[left]>input[max]){
max=left
}
if(right<arrayLength&&input[right]>input[max]){
max=right
}
if(max!==i){
swap(input,i,max)
heapRoot(input,max)
}
}
functionswap(input,indexA,indexB){
[input[indexA],input[indexB]]=[input[indexB],input[indexA]]
}
exportfunctionheapSort(input){
arrayLength=input.length
for(leti=Math.floor(arrayLength/2);i>=0;i-=1){
heapRoot(input,i)
}
for(leti=input.length-1;i>0;i--){
swap(input,0,i)
arrayLength--
heapRoot(input,0)
}
returninput
}