当前位置: 首页 > news >正文

堆排序code

#include<bits/stdc++.h>

using namespace std;

#define maxn 501

int arr[maxn];

void swap(int i,int j){

    int tmp=arr[i];

    arr[i]=arr[j];

    arr[j]=tmp;

}

//向上调整函数

void heapinsert(int x){

    if(x==0) return;

    int i=(x-1)/2;  //父节点

    while(1){

        if(i<0||arr[i]>=arr[x]) break;

        else{

            swap(x,i);

        }

        x=i;

        i=(i-1)/2;

    }

}

//向下调整函数

void heapify(int pl,int size){

    int l=pl*2+1;

    if(l>=size){

        return;

    }

    while(l<size){

        int best=(l+1<size)?(arr[l]>arr[l+1]?l:l+1):l;

        if(arr[best]>arr[pl]){

            swap(best,pl);

        }

        else{

            break;

        }

        pl=best;

        l=pl*2+1;

    }

}

//从顶到底建堆排序

void heapsort1(int n){

    for(int i=0;i<n;i++){

        heapinsert(i);

    }

    int size=n;

    while(size>1){

        size--;

        swap(0,size);

        heapify(0,size);

    }

}

//从底到顶建堆排序

void heapsort2(int n){

    for(int i=n-1;i>=0;i--){

        heapify(i,n);

    }

    int size=n;

    while(size>1){

        size--;

        swap(0,size);

        heapify(0,size);

    }

}

void print(int arr[],int n){

    for(int i=0;i<n;i++){

        printf("%d ",arr[i]);

    }

    puts("");

}

int main(){

    int n;

    cin>>n;

    for(int i=0;i<n;i++){

        cin>>arr[i];

    }

    //heapsort1(n);

    //print(arr,n);

    heapsort2(n);

    print(arr,n);

    return 0;

}

http://www.xdnf.cn/news/939061.html

相关文章:

  • 第三章 AI应用开发
  • 探秘Transformer系列之(36)--- 大模型量化方案
  • OpenEuler 系统中 WordPress 部署深度指南
  • Pandas中常用函数
  • 2025年- H78-Lc186--763.划分字符串区间(贪心)--Java版
  • 分类数据集 - 场景分类数据集下载
  • Langchian - 实现文本分类实际应用
  • 【Java学习笔记】System类
  • vite ts 配置使用@ 允许js
  • 基于SpringBoot实现的大创管理系统设计与实现【源码+文档】
  • 「Java基本语法」标识符、关键字与常量
  • Java编程之组合模式
  • Python项目的构建和部署方案推荐
  • remote display server is not supported (e.g. Wayland)
  • CentOS-7 通过 NFS 实现服务器之间的文件共享
  • 深入了解NIO的优化实现原理
  • 二叉树-226.翻转链表-力扣(LeetCode)
  • Python学习(7) ----- Python起源
  • cookie session和token的区别
  • 突破同步训练瓶颈!AReaL如何实现大规模异步强化学习系统的高效语言推理?
  • 树的基本概念与操作:构建数据结构的层级世界
  • leetcode2368. 受限条件下可到达节点的数目-medium
  • JDK8新特性之Steam流
  • 手动实现C#ArrayList容器
  • Boost ASIO 库深入学习(2)
  • Redis持久化策略:RDB与AOF详解
  • shell脚本 --案例实操
  • cognee,有望替代 RAG, 简单了解一下
  • 服务网格技术深度解析:Istio vs Linkerd的选型对比
  • 【Self-Ask with Search Agent机制概述】利用TavilyAnswer实现搜索代理