0
点赞
收藏
分享

微信扫一扫

大根堆---堆排序

奔跑的酆 2022-03-24 阅读 81
算法java

    class Solution {

 

    public int[] sortArray(int[] nums) {

     //堆排序

         int len=nums.length;

         HeapSort(nums,len);

         return nums;

    }

    void HeapSort(int nums[],int len)

    {

        BuildMaxHeap(nums,len);

        for(int i = len-1;i>=0;i--){

            int temp ;

            temp = nums[0];

            nums[0]= nums[i];

            nums[i]=temp;  

            HeapAdjust(nums,0,i);

        }

    }

     void BuildMaxHeap(int nums[],int len){

         for(int i = (len/2)-1;i>=0;i--){

            HeapAdjust(nums,i,len);

            

          }

     }

     void HeapAdjust(int nums[],int k,int len){

          int temp = nums[k];

         for(int i = (2*k)+1; i<=len-1; i=(i*2)+1 ){

             if( i < len-1 && nums[i]<nums[i+1])

                      i++;

                if(temp >nums[i])

                     break;

                else{

                    nums[k]=nums[i];

                        k=i;

                }

                

          }

              

举报

相关推荐

0 条评论