-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathheapSort.js
More file actions
36 lines (28 loc) · 701 Bytes
/
heapSort.js
File metadata and controls
36 lines (28 loc) · 701 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
function heap(array){
for(let i=Math.floor(array.length/2)-1;i>=0;i--){
heapify(array,i,array.length)
}
for(let i=array.length-1;i>0;i--){
[array[0],array[i]]=[array[i],array[0]]
heapify(array,0,i)
}
return array
}
function heapify(array,i,length){
let largest=i
let left=i*2+1
let right=i*2+2
if(left<length&&array[left]>array[largest]){
largest=left
}
if(right<length&&array[right]>array[largest]){
largest=right
}
if(largest!==i){
[array[i],array[largest]]=[array[largest],array[i]]
heapify(array,largest,length)
}
}
let array=[6,3,8,9,2,1]
let res=heap(array)
console.log(res);