zoukankan      html  css  js  c++  java
  • 堆排序

    堆排序的原理不用解释了,实现了一个简易的堆排序算法,放到这里,以后可以直接拿来用。

    首先是调整堆的例程:

          void heapAdjust(int arr[], int s, int m):假设堆arr中除s以外的其余元素都满足堆定义,此函数调整s关键字,使[s:m]成为一个大根堆

     1 void heapAdjust(int arr[], int s, int m)
     2 {
     3     int j;
     4     int rc = arr[s];
     5     for(j = 2*s; j < m; j = j*2)
     6     {
     7         if(j<m && arr[j]<arr[j+1])
     8             j++;
     9         if(rc >= arr[j])
    10             break;
    11         arr[s] = arr[j];
    12         s = j;
    13     }
    14     arr[s] = rc;
    15 }

    然后是我们的堆排序

        void heapsort(int arr[], int size):

          1)将[0:size-1]范围内的元素建成一个大根堆

          2)以此将根元素与最后一个元素调换并重新调整堆及堆大小。

     1 void heapsort(int arr[], int size)
     2 {
     3     int i, tmp;
     4 
     5     //建一个大根堆
     6     for(i = size/2; i >= 0; i--)
     7         heapAdjust(arr, i, size);
     8 
     9     for(i = size-1; i >= 0; i--)
    10     {
    11         tmp = arr[0];
    12         arr[0] = arr[i];
    13         arr[i] = tmp;
    14 
    15         heapAdjust(arr, 0, i-1);
    16     }
    17 }

     

    Over~

  • 相关阅读:
    JAVA DBUTils和连接池
    JAVA jsp技术
    java cookie学习
    grub引导
    更改网卡顺序及名称
    ambari 警告信息
    radhat7.2 救援模式
    radhat7.2 系统引导修复
    sehll编程入门
    HBase安装部署
  • 原文地址:https://www.cnblogs.com/cobbliu/p/2513402.html
Copyright © 2011-2022 走看看