zoukankan      html  css  js  c++  java
  • 【Sort】HeapSort

      堆排序,时间复杂度O(N log N),实际使用中慢于使用Sedgewick增量的增量排序。

      大致思路:

      1.先在数组中建堆,如果是增量排序,则需要建一个大堆

      2.每循环一次,把最大的数,也就是nums[0],放入堆尾,同时把nums[0]下滤

     1 void heapsort(int *nums,int n)
     2 {
     3     int i;
     4     for(i=n/2;i>=0;i--)
     5         percdown(nums,i,n);
     6     for(i=n-1;i>0;i--)
     7     {
     8         nums[0]^=nums[i];
     9         nums[i]^=nums[0];
    10         nums[0]^=nums[i];
    11         percdown(nums,0,i);
    12     }
    13 }
    14 void percdown(int *nums,int p,int n)
    15 {
    16     int tmp;
    17     int child;
    18     for(tmp=nums[p];2*p+1<n;p=child)
    19     {
    20         child=2*p+1;
    21         if(2*p+2!=n&&nums[2*p+2]>nums[child])
    22             child++;
    23         if(nums[child]>tmp)
    24             nums[p]=nums[child];
    25             else
    26                 break;
    27     }
    28     nums[p]=tmp;
    29 
    30 }
  • 相关阅读:
    JavaScript操作DOM对象
    QTP(13)
    QTP(12)
    QTP(11)
    QTP(10)
    QTP(9)
    QTP(8)
    QTP(7)
    QTP(6)
    QTP(5)
  • 原文地址:https://www.cnblogs.com/fcyworld/p/6172077.html
Copyright © 2011-2022 走看看