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

    #include<iostream>
    using namespace std;
    void AdjusHeap(int arr[], int i, int n) {
        int s = i;
        int x = i*2;
        int y = x+1;
        if (x < n && arr[s] < arr[x]) 
          s = x;
      if (y < n && arr[s] < arr[y])
        s = y;
      if (s != i) {
          swap(arr[i], arr[s]);
          AdjusHeap(arr, s, n);
        }
    }
    void BuildHeap(int arr[], int n) {
        for (int i = n/2-1; i >=0; i--)
          AdjusHeap(arr, i, n);
    }
    void HeapSort(int arr[], int n) {
        BuildHeap(arr, n);
        while (n > 1) {
            swap(arr[0], arr[n-1]);
            n--;
            AdjusHeap(arr, 0, n);
        }
    }
    int main() {
      int arr[10];
      for (int i=0; i<5; i++)
        cin>>arr[i];
      HeapSort(arr, 5);
      for (int i=0; i<5; i++)
        cout<<arr[i]<<" ";
    }
    #include<iostream>
    using namespace std;
    void AdjusHeap(int arr[], int i, int end){//与父节点比较 
      int x=i*2+1;//
      int y=x+1;//
      int s=i;//
      while (x<end||y<end){
        if (x<end&&arr[s]<arr[x])
          s=x;
        if (y<end&&arr[s]<arr[y])
          s=y;
        if (s!=i){
          swap(arr[i], arr[s]);
          i=s;
          x=i*2+1;
          y=x+1;
        }
        else
          break;
      }
    } 
    void BuildHeap(int arr[], int end){//建立树 
      for (int i=end/2-1; i>=0; i--){
        AdjusHeap(arr, i, end);
      }
    }
    void HeapSort(int arr[], int end){//根节点与最后一个交换 
      BuildHeap(arr, end);
      while(end>1) {
        swap(arr[0], arr[end-1]);
        end--;
        AdjusHeap(arr, 0, end);
      }    
    }
    int main() {
      int arr[10];
      for (int i=0; i<5; i++)
        cin>>arr[i];
      HeapSort(arr, 5);
      for (int i=0; i<5; i++)
        cout<<arr[i]<<" ";
    }

     参考:http://www.cnblogs.com/Anker/archive/2013/01/23/2873422.html

  • 相关阅读:
    ajax与Servlet
    Myeclipse快捷键的设置以及默认的编码格式
    bootstrap02导航菜单
    bootstrap01登录小例子
    ajax
    面向对象04异常
    mysql
    Day10 Python基础之特殊函数(八)
    Day9 Python基础之函数基础(七)
    Day8 Python基础之遗漏知识点(六)
  • 原文地址:https://www.cnblogs.com/a863886199/p/6628426.html
Copyright © 2011-2022 走看看