zoukankan      html  css  js  c++  java
  • 堆排序的实现

      堆排序也是一种重要的排序方式,时间复杂度能达到O(nlogn),是非常优越的排序,下面给出具体代码,原理和思路还是google一下吧,我语言欠缺描述不好,很多大神的博客里都有详细的讲解。

    #include<iostream> 
    using namespace std; 
    void max_heapify(int data[],int i,int heapsize) 
    { 
        int l,r;
    	int largest = i; 
        l = 2 * i + 1; 
        r = 2 * i + 2; 
        if(l < heapsize && data[l] > data[i]) 
            largest = l; 
        if(r < heapsize && data[r] > data[largest]) 
            largest = r; 
        if(largest != i) 
        { 
            int tmp = data[largest]; 
            data[largest] = data[i]; 
            data[i] = tmp; 
            max_heapify(data,largest,heapsize); 
        } 
    } 
    void set_max_heap(int data[],int heapsize) 
    { 
        for(int i = heapsize / 2 - 1;i >= 0;i --) 
            max_heapify(data,i,heapsize); 
    } 
    void heap_sort(int data[],int heapsize) 
    { 
        set_max_heap(data,heapsize); 
        for(int i = heapsize - 1;i > 0;i --) 
        { 
            int t = data[0]; 
            data[0] = data[i]; 
            data[i] = t; 
            max_heapify(data,0,i); 
        } 
    } 
    int main() 
    { 
        int data[10] = {3,6,1,9,4,5,2,7,0,8}; 
        heap_sort(data,10); 
        for(int i = 0;i < 10;i ++) 
            cout<<data[i]<<" "; 
        cout<<endl; 
    } 
    

      输出结果:

  • 相关阅读:
    【z02】选择客栈
    JavaEE(22)
    驱动表问题
    影响子查询展开的情况
    SQL*Net message from client
    等值链接和非等值链接
    ||拼接列关联和直接关联区别
    分页SQL优化
    SQL*Net more data to client
    SQL*Net message to client
  • 原文地址:https://www.cnblogs.com/coderchuanyu/p/4213971.html
Copyright © 2011-2022 走看看