文章

6

粉丝

0

获赞

4

访问

803

头像
堆排序 题解:
P2012 云南大学机试题
发布于2025年5月23日 16:00
阅读数 58

#include <bits/stdc++.h>
using namespace std;


void adjustHeap(int* arr, int n, int i){
    int mx = i;
    int l = 2*i;
    int r = 2*i + 1;
    if(l <= n && arr[l] > arr[mx]) mx = l;
    if(r <= n && arr[r] > arr[mx]) mx = r;
    if(mx != i){
        swap(arr[i], arr[mx]);
        adjustHeap(arr, n, mx);
    }
}

void Heap_sort(int* arr, int n){
    for(int i = n/2; i >= 1; i--){
        adjustHeap(arr, n, i);
    }
    for(int i = n; i >= 1; i--){
        swap(arr[i], arr[1]);
        adjustHeap(arr, i-1, 1);
    }
}

int main() {
    int n;
    int maxn = 50005;
    ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发