H面试程序(17): 堆排序

深信服C/C++面试题目总结 内容收集自网络 1. 链表和数组的相同点和不同点 特点 优点 缺点 数组 存储区域连续需要预先分配空间,可能造成空间浪费或者不利于扩展插入/删除效率低随机读取效率高 随机访问性强查找速度快 插入和删除效率低可能浪费内存内存空间要求高,必须有足够的连续内存空间数组大小固定,不能动态拓展 链表 存储区域不要求连续,每个数据都保存了下一个数据的地址(如果有)数据的增加/删除容易,易... 阅读详情

 

本文代码出自:http://blog.youkuaiyun.com/taizhoufox/article/details/5938616

我对代码进行了一些注释

 

/************************************************
 * 测试从数组0号位开始的堆排序
 * 
 * 与上面根元素,则左孩子为2i+1,右孩子为2(i+1);
 * 2.孩子不同的知识点
 * 1.0号是为i,则父亲为i-1/2
 * 
 */
/**
 * a:		待排序数组
 * len:		数组长度
 */

#include <stdio.h>
#include <time.h>
void swap(int *a, int *b)
{
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}

void show_array( int a[], int n )
{
    int i;
    for( i = 0; i < n; i++ )
        printf( "%d ", a[i] );
	printf("\n");
}

void maxHeapAdjust(int a[], int rootIndex,int maxHeapIndex);
void heapSort2(int a[],int len)
{
	int i;
	int maxHeapIndex = len-1;
	//首先建堆
	for(i=(maxHeapIndex-1)/2;i>=0;i--)  //从最低到上,完全二叉树的最后一个含有子节点的根
	{
		maxHeapAdjust(a,i,maxHeapIndex);
	}
   show_array(a,len);
	for(i=maxHeapIndex;i>=1;i--)
	{
		swap(&a[0],&a[i]);	// 交换首尾元素,此时尾元素即为当前(0 ~ a[i-1]中最大的元素),调整后要继续堆化时,堆数组最大索引要减1
		maxHeapAdjust(a,0,i-1);  //从上(a[0])到下调整堆的结构
	}
	show_array(a,len);
}
/***
 * a			待排数组
 * rootIndex	本次堆化的根
 * maxHeapIndex 本次堆化所达到的堆数组最大索引
 * 以a[rootIndex]为根节点的子树之间最大的数,把这个最大数放在根节点a[rootIndex],
 * a[rootIndex]上的数替换为a[largest],那么再检查以largest为根节点的子树是否满足最大堆的要求,依次类推
 */
void maxHeapAdjust(int a[], int rootIndex,int maxHeapIndex)//
{
	int lChild = rootIndex*2+1;
	int rChild = (rootIndex+1)*2;
	int largest = rootIndex;
	if(lChild <= maxHeapIndex && a[lChild] > a[rootIndex])   //
		largest = lChild;                                    //
	if(rChild <= maxHeapIndex && a[rChild] > a[largest])
		largest = rChild;
	if(largest != rootIndex)
	{
		swap(&a[largest],&a[rootIndex]);   //若根节点经过了调整,就要将最大的那个数放在根节点,
		maxHeapAdjust(a,largest,maxHeapIndex); //再看看以调整后的以a[largest]为根节点的子树是否还是满足最大堆
	}
}
int main()
{
	int a[] = {8,6,2,5,7,9,4,6,10,1,3};
	int len = sizeof(a)/sizeof(int);
	show_array(a,len);
	heapSort2(a,len);
	show_array(a,len);
	return 0;
}


 


 

放弃FFT全频计算!在STM32F407上用DFT单点计算提速50%的优化技巧 本文详细介绍了在STM32F407上通过DFT单点计算实现比FFT快50%的优化技巧,特别适用于生物阻抗分析、振动监测等只需关注单一频点的嵌入式场景。通过预计算相位角、查表法和混合精度计算等策略,显著提升计算效率和内存利用率,同时保持高精度。 阅读详情

相关推荐

【OTDR曲线工具箱】04 批量生成sor文件

软件下载地址:http://120.78.150.214:9999/isora.zip 通过一个测试数据sor文件,批量生成多个测试文件(基于Bellcore GR196及SR-4731标准)。主要考虑哪些问题: 1、sor测试是否符合要求(主要是衰减系数) 2、多个文件的创建时间 3、文件必须随机处理,不要看省去一模一样。 来说说怎么操作的 第一步:选择参考曲线 参考曲线的选择由两种方法:从文件中导入、从曲线库中选择。 其中曲线库分为公共库和个人库两种,平时浏览的sor文件都可以加载到库中。 第二步

夜晚是传说的博客 5276

linux内核sort()排序的使用

函数原型 void sort(void *base, size_t num, size_t size, int (*cmp_func)(const void *, const void *), void (*swap_func)(void *, void *, int size)) 参数说明 base:数据的...

yldfree的博客 1884

.NET 8 组件之IOC容器组件

NET 8中的IOC容器组件继承了前几代的优良传统,并在性能、扩展性、灵活性等方面进行了诸多优化,使得它在现代应用开发中依然保持领先地位。通过合理使用IOC容器,开发者可以更高效地管理依赖关系,编写更加模块化、可维护的代码。随着.NET生态的不断发展,IOC容器将继续扮演关键角色,为开发者提供强大的依赖管理功能。

hy_4377的博客 1530

java面试 算法篇之堆排序_java 算法基础之四堆排序法

堆排序是一种利用完全二叉树来解决问题的高效算法,合法的最大堆树要满足一个条件就是每一个结点值都要大于或等于它的孩子结点值。在一个数组中那专业法表示为:arrays[i]>=arrays[2*i+1] && arrays[i]>=arrays[2*i+2]; 最小堆类似,只要改为冒最小值即可。堆排序树的构造过程找最大值过程由下图,数组arrays[0....n]为:17,...

weixin_42191359的博客 145

ROS2多线程处理RTSP视频流避坑指南:OpenCV解码丢帧问题解决方案

本文针对ROS2中处理RTSP视频流时OpenCV解码丢帧的常见问题,提供了专业的解决方案。通过深入分析单线程模型的瓶颈,提出并详细拆解了基于生产者-消费者多线程模型的健壮实现方案,有效分离数据采集与处理,从而显著提升视频流的稳定性和流畅度。

weixin_29199873的博客 168

苹果搜索广告ASA开户教程

阅读导航 一、创建账号 1、登录网站 2、填写账号主体信息 3、填写商家和发票信息 4、选择付款方式 二、上传审核材料 1、上传文件 2、请求审批 3、上传文件中的常见问题 一、创建账号 1、用Apple ID登录ASA网站 首先我们进入开户网址:https://app-ads.apple.com/ 如果已拥有Apple ID,直接登录即可,如果没有Apple ID,可以先按照步骤创建Apple ID,再返回登录。 注意,这里登录的Apple ID也有讲究: ① 如果是开发

testflight121的博客 2131

面试题 17.14. 最小K个数

面试题 17.14. 最小K个数有关题目题解 题目链接:面试题 17.14. 最小K个数 有关题目 设计一个算法,找出数组中最小的k个数。 以任意顺序返回这k个数均可。 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 提示: 0 <= len(arr) <= 100000 0 <= k <= min(100000, len(arr)) 题解 法一:排序 代码一: class Solution { public:

MerryMaking7946的博客 183

手把手教你用ZLMediaKit搭建WebRTC直播:本地推流与播放实战

本文详细介绍了如何使用ZLMediaKit搭建WebRTC直播系统,涵盖从环境准备、编译部署、SSL证书配置到本地推流与播放的完整实战流程。通过一步步的指导,帮助开发者快速掌握基于ZLMediaKit的WebRTC推拉流技术,构建低延迟的实时音视频应用。

weixin_28842367的博客 348

百度面试经历(拿到批发价。。)

先简单说下百度的笔试,,肯定都想吐槽,,11号笔试推到12号,12号的时候也比较卡,两个综合题看了下题退出了结果进不去了。。三个编程题我的是两个简单的dp,一个样例错了的题。。选择题什么都有,一半靠蒙。 9月14号中午在等面腾讯的时候收到百度的电话,让下午4点半去面试,经过了腾讯丧心病狂的群面之后,又面了上科大的三个老师,去百度的时候迟到了二十多分钟,之间还接到面试官催促的电话,感觉要跪。。

360

UE5与Cesium for Unreal结合:打造高效离线地图解决方案

本文详细介绍了如何利用UE5与Cesium for Unreal结合打造高效离线地图解决方案,特别适用于数字孪生、军事仿真等网络不稳定场景。通过优化配置、数据处理和性能调优,实现TB级地形数据的流畅渲染,并结合实战案例展示了在油田巡检等复杂环境中的应用效果。

weixin_29007135的博客 493

《DeepJIT: An End-To-End Deep Learning Framework for Just-In-Time Defect Prediction》论文笔记

软件工程任务:即时缺陷预测(涉及SE+AI知识)

weixin_43646592的博客 703

30岁,程序员,烦透了,阿里面试100%会问到的JVM

三面:1h50min 我感觉这场面试很多时候我都没正确get到面试官的问题,所以花了很长时间,不然还能从面试官那学到更多!!!面试的时候觉得面试官问的挺深的,但是复盘的时候觉得其实也都是些基础知识。 1. 说一下项目,假装我是一个啥都不懂的人 2. 让你来设计这个项目你会怎么设计,设计流程。 讨论了一下项目细节以及我做的那部分工作 3. 类中的几个基本函数有哪些 4. 什么情况下我们一定要有拷贝构造函数(我打了个比方,string类就一定要有)。你这说的是一种情况,那你总结一下,什么情况下一定要有拷贝构造函

m0_66144910的博客 385

人工智能训练师三级补贴3120元申领全攻略|条件+流程+五省市对比

补贴是真的,但不是"白给"的。你需要满足社保、户籍、时间等条件,严格按照流程操作。记住四件事先确认自己是否满足条件,再报名——别考完了才发现领不到紧缺工种补贴更高——确认你所在城市是否在紧缺目录中证书下发后12个月内申请——设个日历提醒材料准备齐全再提交——避免来回折腾如果你正在考虑考人工智能训练师三级证书,想要从报名到备考到拿证到申领补贴的完整一站式指南,欢迎查看我的付费专栏:📖《人工智能训练师三级·从零到拿证完全指南》80篇系统化内容,覆盖报名、备考、冲刺、拿证全流程。

白话机器学习 1534

面试题9:数组堆化、堆的插入、堆的删除、堆排序

参考:白话经典算法系列之七 堆与堆排序 1 #include <iostream> 2 #include <climits> 3 #include <vector> 4 using namespace std; 5 6 namespace heap { 7 8 //insert an element to a h...

weixin_30408675的博客 136

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

30岁,程序员,烦透了,可父母力阻我辞职,怎么办?

总而言之,成功是留给准备好的人的。无论是参加什么面试,都要做好充足的准备,注意好面试的礼仪和穿着,向面试官表现出自己的热忱与真诚就好。即使最后没有过关,也要做好经验的总结,为下一次面试做好充足准备。这里我为大家准备了一些我在面试后整理的面试专题资料,除了面试题,还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料分享给大家,希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

2401_84148911的博客 616

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TopK问题(堆排序)-- go

TopK问题(堆排序)-- go实现

2303_79380171的博客 383

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

面试中常见的C/C++面试必考题

面试中常见的C/C++面试题 写这篇博客的目的,主要是记录一下在面试、笔试中,经常遇到的C/C++相关的出现频率较高的知识点。 个人经验、能力有限,热烈欢迎大家提供自身经历过的真实原题及答案。(众人拾柴火焰高!) 1、C和C++的区别(至少说出三点) 答:(1)C++是面向对象语言,C是面向过程语言。 (2)结构:C以结构体struct为核心结构;C++以类class为核心结构。...

yishuihanq的博客 4338

30岁,程序员,烦透了,可父母力阻我辞职,怎么办?,Android高级工程师面试实战

🏆。

2301_82242432的博客 943

字节跳动面试总结

拿到字节offer已经有两周多了,目前手头工作也交接的差不多了。今天对字节面试过程做个总结,希望能够帮助到想去大厂的人。 时间介绍 岗位是运维研发岗 周日11-22 20.32 接到杭州电话约我11.24 20:00进行面试 周二11-24 18:00 还是杭州电话,跟我说面试官临时有事,面试推迟到12-01 20:00 周五11-27 16:08 北京电话跟我说面试官有事面试推迟到12-03 20:00。额有点崩溃,跳票两次。。 周四12-03 20:00~21:15 视频一面,使用飞书 .

chen_wan_zhou的博客 1254

面试字节,成功上岸,发现阿里,字节,腾讯等很多互联网公司必问的面试题

前言 随着金九银十的到来,回首在经历了两周的跳槽求职路后,终于成功拿到字节的offer,距今已经入职快二个月了,因此,这几天抽空将之前的面试题做了个汇总,一方面自己以后回顾学习用,一方面为大家奉送上一份福利。 很多Java开发者面试之前,可能没有较长的工作时间或者较为丰富的工作经验,所以不知道互联网公司或者一线互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,最后以惨败收场。针对这些的朋友,我整理了一些大厂的面试题,和我面试时被问的问题,在这分享给

weixin_46577306的博客 3266

35岁,滴滴司机想当程序员,烦透了,可父母力阻我辞职,怎么办?

前言 情况是这个样子的,我今年35岁,男,在滴滴做司机(之前是程序员),虽然工资收入都还可以尽管上了年纪但是我想跳槽去字节跳动试一下,再次干会老本行! 我是学java的后面转的Android,985本硕,这几年我在滴滴干的还可以,但是一成不变的生活和工作!我想改变一下! 我现在有房无贷款,有家庭。父母不需要我养老。 现在最大的阻力在父母,他们干教师一辈子极力阻止我辞职! 即使在这样的情况下我还是选择了辞职!因为哪怕年纪到了,压力更大了,我也想好好为自己努力一次! 新的开始(面试) 一面:1h 1. 单例模

wzh19950826的博客 9146

刚从大厂面试回来,分享我的 java 后端面试经历(腾讯五面)

大厂 面试职位:java 后端开发工程师。 在大厂的面试前三面真的有点急促,一周内就面完了三次面试,接着就开始无尽的等待,整整等了三周左右,终于完成了四面和 HR 面。整个过程还是比较曲折的,技术面试的难度也挺大的,不过他们部门也是 Java 线,所以还比较有的聊。现在已拿到 offer。 下面我总结的遇到的四面技术面试题和 hr 面。 一面: 1 有序数组排序,二分,复杂度 2 常见排序算法,说下快排过程,时间复杂度 3 有 N 个节点的满二叉树的高度。1+logN 4 朋友之间的点对点关

m0_67698950的博客 728

35岁,滴滴司机想当程序员,烦透了,安卓app开发入门书籍推荐

1. 单例模式知道不,写一个 2. 智能指针讲一下,shared_ptr循环引用怎么就会内存泄露呢?weak_ptr源码有看过吗? 3. 内存模型 4. 栈和堆的效率 5. 堆和找的区别 6. 数组和链表的区别 7. 算法:leetcode3 反问 二面:1h 1. 讲讲你这项目你做的工作。 2. 又是一个项目,你是怎么想的,怎么设计的 3. 既然你提到了多线程,那讲讲进程和线程的区别 4. 进程间的通信 5. 多进程怎么就不安全了? 6. 数据库中也存在一些不安全的现象,怎么解决 7. 事务是怎么一回事

m0_64382743的博客 592

面试必会题目

前言 程序员们(苦逼的劳动者)笔试/面试遇到编程题目是不可避免的,先经常会考到的题目总结如下: [color=red]一、小程序实现部分[/color] 1、素数(质数)的判断与输出(或个数统计)? 2、杨辉三角? 3、正整数分解质因数? 4、条件运算符的嵌套? 5、求s=a+aa+aaa+aaaa+aa...a的值?(其中a是一个数字) 6、函数递归调用的实现?(也可针对于某一问...

hnzgemail的博客 313

刚从鹅厂面试回来,分享我的java后端面试经历(腾讯五面)!

经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征。 鹅厂 面试职位:java后端开发工程师。 在鹅厂的面试前三面真的有点急促,一周内就面完了三次面试,接着就开始无尽的等待,整整等了三周左右,终于完成了四面和HR面。整个过程还是比较曲折的,技术面试的难度也挺大的,不过他们部门也是Java线,所...

weixin_33795093的博客 712
上一篇: H面试程序(14): 快速排序法
下一篇: H面试程序(18): 归并排序
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值