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

用C语言实现堆排序算法

1.设计思路

  排序的思想将一个数组按递增的顺序进行排序,将数组的第一个位置空下(下标为0),因为会导致子节点和本身同一个结点(i和2i一致),每次堆排序在下标1的位置放上了最大值,然后和最后一个元素交换位置,使之最大值依次放在最后的位置上,最后得到一个递增序列。

2. 源代码

#include<stdio.h> 
#include<stdlib.h>
void HeapSort(int a[], int n)
{	int end=8,x,y,z;	     //	进行堆排序,每次找出最大值放在第一个元素位置 while(end-1){while(1){	int	pa=end/2,tag=0;while(pa>0){if(a[pa]<a[2*pa]){x=a[pa];a[pa]=a[2*pa];a[2*pa]=x;tag=1;}if(2*pa+1<=end&&a[pa]<a[2*pa+1]){y=a[pa];a[pa]=a[2*pa+1];a[2*pa+1]=y;tag=1;}pa--;}if(!tag)  break;}        //	将找出的最大值与最后一个元素调换位置 z=a[1];a[1]=a[end];a[end]=z; end--;}	
}
int main(void)
{int i;int a[9]={-1,3,2,5,8,4,9,6,7};HeapSort(a,9);for( i=1;i<9;i++)   //	输出整体调整后的数组 {printf("%3d",a[i]);}printf("\n");return 0;
}

3.运行结果

在这里插入图片描述

http://www.lryc.cn/news/101582.html

相关文章:

  • tauri在github上进行自动更新打包并发版过程,实战操作避坑
  • css中flex后文本溢出的问题
  • restful接口设计规范[仅供参考]
  • Metabase 远程代码执行(CVE-2023-38646)
  • 【TiDB理论知识 07】SQL执行流程
  • 微服务——服务异步通讯RabbitMQ
  • 事件冒泡、事件捕获和事件委托
  • WEB 典型安全功能说明
  • SQL编译优化原理
  • qt signal slots lambda
  • Spring【声明式事务】
  • 【雕爷学编程】MicroPython动手做(17)——掌控板之触摸引脚2
  • pytorch 中 view 和reshape的区别
  • 认识数组指针
  • SSM面试题-Spring容器的启动流程
  • Vue 3:玩一下web前端技术(八)
  • AI绘画Stable Diffusion原理之Autoencoder-Latent
  • C++核心知识点总结
  • echart折线图,调节折线点和y轴的间距(亲测可用)
  • Power BI-云端报表定时刷新--ODBC、MySQL、Oracle等其他本地数据源的刷新(二)
  • redis 淘汰策略和持久化
  • Redis学习路线(6)—— Redis的分布式锁
  • 一、创建自己的docker python容器环境;支持新增python包并更新容器;离线打包、加载image
  • 【Git】git企业开发命令整理,以及注意点
  • 使用Django自带的后台管理系统进行数据库管理的实例
  • leetcode解题思路分析(一百四十五)1254 - 1266 题
  • 使用 GORM 连接数据库并实现增删改查操作
  • kafka集群搭建(Linux环境)
  • 树莓派本地快速搭建web服务器,并发布公网访问
  • 集合中的数据结构