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

【PTA数据结构 | C语言版】二叉堆的朴素建堆操作

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

    • 题目
    • 代码

题目

请编写程序,将 n 个顺序存储的数据用朴素建堆操作调整为最小堆;最后顺次输出堆中元素以检验操作的正确性。

输入格式:
输入首先给出一个正整数 c(≤1000),为最小堆的最大容量;下一行给出正整数 n(≤c);随后一行给出 n 个元素。所有元素均为 int 型范围内的整数。

输出格式:
在 n 行中按层序遍历的顺序每行输出一个最小堆元素。

输入样例:
10
6
7 3 9 5 2 8

输出样例:
2
3
8
7
5
9

代码

#include <stdio.h>
#include <stdlib.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}// 向上调整堆,维护最小堆性质
void siftUp(int arr[], int i) {while (i > 0) {int parent = (i - 1) / 2;if (arr[i] >= arr[parent])break;swap(&arr[i], &arr[parent]);i = parent;}
}// 朴素建堆方法:逐个插入元素
void buildHeapNaive(int arr[], int n) {for (int i = 1; i < n; i++)siftUp(arr, i);
}int main() {int c, n;scanf("%d", &c);scanf("%d", &n);int *arr = (int *)malloc(c * sizeof(int));for (int i = 0; i < n; i++)scanf("%d", &arr[i]);buildHeapNaive(arr, n);// 按层序遍历输出for (int i = 0; i < n; i++)printf("%d\n", arr[i]);return 0;
}    
http://www.lryc.cn/news/592208.html

相关文章:

  • HTML 页面禁止缩放功能
  • 深入解析文本分类技术全景:从特征提取到深度学习架构
  • 数据库的基础概操作
  • 计算机视觉与机器视觉
  • 基于物联网的智能农情监测预警系统
  • 深入解析PyQt5信号与槽的高级玩法:解锁GUI开发新姿势
  • Maven学习总结(62)—— Maven 打包瘦身和提速解决方案
  • 电网驱鸟黑科技:鸟类AI识别算法+无人机实现“智慧护线“
  • 在ajax中什么时候需要将返回值类型做转换
  • 【教程】基于无人机的大豆光合效率研究
  • 实战指南|智慧无人机安防系统搭建全流程解析
  • 前端项目利用Gitlab CI/CD流水线自动化打包、部署云服务
  • 无人机悬停技术运行与难点分析
  • 【QT】调用外部dll
  • 无人机传感器模组运行与技术难点分析
  • Python练习(5)Python参数传递的20道核心实战练习题(含答案与深度解析)(下)
  • H3CNE小小综合实验
  • js中的微任务和宏任务的理解
  • 【宇树科技:未来1-3年,机器人可流水线打螺丝】
  • 脚手架本地link标准流程
  • Java HashMap高频面试题深度解析
  • SpringBoot-27-企业云端开发实践之跨域认证JWT
  • BGP的“聪明选路”遇上了TCP的“路径洁癖”,需人工调和
  • jar命令提取 JAR 文件
  • Esbuild-新一代极速前端构建打包工具
  • PE系统机器视觉实战(直播回放)
  • 提示工程核心概念:与AI清晰沟通的艺术
  • wx小程序设置沉浸式导航文字高度问题
  • ::v-deep 是 Vue 中用于 ‌样式穿透(深度选择器)‌ 的语法
  • 自然语言处理:AI 如何听懂人类的 “话”?​