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

    #include<bits/stdc++.h>
    using namespace std;
    
    const int maxn = 100000+5;
    int heap[maxn],_size;
    void put(int k){
        heap[++_size]=k;
        int now=_size;
        while(now>1){
            int nxt = now >> 1;
            if(heap[now]>heap[nxt])return;
            swap(heap[now],heap[nxt]);
            now = nxt;
        }
        
    }
    void get(){
        int res = heap[1];
        heap[1] = heap[_size--];
        heap[_size+1] = res;
        int now = 1;
        while(now*2<=_size){
            int nxt = now << 1;
            if(nxt<_size&&heap[nxt]>heap[nxt+1])nxt++;
            if(heap[now]<=heap[nxt])return;
            swap(heap[now],heap[nxt]);
            now = nxt;
        }
    }
    int main(){
        int n,tot=0;
        cin>>n;
        for(int i=1;i<=n;i++){
            int b;
            cin>>b;
            put(b);
        }
        for(int i=1;i<n;i++)get();
        for(int i=1;i<=n;i++) cout<<heap[i]<<" ";
    }
  • 相关阅读:
    Js获取下拉框当前选择项的文本和值
    11、ACL
    10、VLAN
    9、层二交换技术
    8、OSPF
    7、EIGRP
    6、RIP
    5、路由协议原理
    4、设备配置与管理
    3、IP地址划分
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/8365422.html
Copyright © 2011-2022 走看看