boshrc
·
August 06, 2014
·
Last by torvaldsdb replied at December 12, 2016
·
1996 hits
classAllsortsdefself.build_max_root_heap(arr)# build the arr to a heap with max root returnarrifarr.size<=1(1..(Math.log(arr.size,2).to_i)).to_a.reverse.eachdo|i|end_||=arr.size-1((2**i-1)..end_).eachdo|j|ifj%2==0arr[j-1],arr[j]=arr[j],arr[j-1]ifarr[j-1]<arr[j]arr[j/2-1],arr[j-1]=arr[j-1],arr[j/2-1]ifarr[j/2-1]<arr[j-1]endifj==end_andj%2!=0arr[j/2],arr[j]=arr[j],arr[j/2]ifarr[j/2]<arr[j]endendendarrenddefself.heapsort(arr)returnarrifarr.size<=1(arr.size-1).timesdo|i|j=arr.size-i-1arr[0..j]=self.build_max_root_heap(arr[0..j])arr[j],arr[0]=arr[0],arr[j]endarrendend