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

    #include<iostream>
    using namespace std;
    
    int parent(int i)
    {
        return i/2;
    }
    
    int left(int i)
    {
        return 2*i;
    }
    
    int right(int i)
    {
        return 2*i + 1;
    }
    
    void swap(int &a, int &b)
    {
        int t = a;
        a = b;
        b = t;
    }
    
    void max_heapify(int arr[],int size, int i)
    {
        int l = left(i);
        int r = right(i);
        int largest = i;
        if(l<size && arr[l]>arr[largest])
            largest = l;
        if(r<size && arr[r] > arr[largest])
            largest = r;
        if(largest != i)
        {
            swap(arr[i], arr[largest]);
            max_heapify(arr,size,largest);
        }
    }
    
    void build_max_heap(int arr[],int size)
    {
        int i = 0;
        for(i=size/2; i>=0; i--)
            max_heapify(arr,size,i);
    }
    
    
    
    void print_arr(int arr[], int size)
    {
        for(int i=0; i<size; i++)
            cout<<arr[i]<<" ";
        cout<<endl;
    }
    
    void heapsort(int arr[], int size)
    {
        cout<<"before heap sorting..."<<endl;
        print_arr(arr,size);
        int heap_size = size;
        build_max_heap(arr,size);
        for(int i=size-1; i>0; i--)
        {
            swap(arr[0],arr[i]);
            heap_size--;
            max_heapify(arr,heap_size,0);
        }
        cout<<"After heap sorting..."<<endl;
        print_arr(arr,size);
    }
    
    
    int main()
    {
        int i = 0;
        int n;
        int arr[1000];
        cout<<"please input the size of array!"<<endl;
        cin>>n;
        cout<<"plead input the "<<n<<" numbers!"<<endl;
    
        for(i = 0; i<n; i++)
            cin>>arr[i];
        heapsort(arr,n);
        return 0;
    }
    多学习,多总结。
  • 相关阅读:
    构建之法阅读笔记05
    四元数(Quaternion)
    httpclient
    两种unity双击事件
    WWW网络请求
    Unity混合天空盒
    unity message
    unity射线检测
    unity 初始化数据存储问题
    Awake,start,update,OnEnable,OnDisable
  • 原文地址:https://www.cnblogs.com/yanhaiming/p/2954728.html
Copyright © 2011-2022 走看看