面试复习(C++)之堆排序

#include <iostream>

using namespace std;

void Maxheap(int *a,int i,int heapSize)//最大数调整
{
    int left=i*2+1;//i的左节点
    int right=i*2+2;
    int largest;//中间变量

    if(left<heapSize&&a[left]>a[i])
    {
        largest=left;
    }
    else
    {
        largest=i;
    }
    if(right<heapSize&&a[right]>a[largest])
    {
        largest=right;
    }
    if(largest!=i)
    {
        swap(a[i],a[largest]);
        Maxheap(a,largest,heapSize);
    }
}

void Maxheapbuild(int *a,int n)//最大数建造
{
    for(int i=n/2-1;i>=0;i--)
    {
        Maxheap(a,i,n-1);
    }
}

void Heapsort(int *a,int n)//堆排序
{
    Maxheapbuild(a,n);
    for(int i=n-1;i>0;i--)
    {
        swap(a[0],a[i]);
        Maxheap(a,0,i);
    }
}

int main()
{
    int n=5;
    int a[10];
    cout<<"Input Num"<<endl;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    Heapsort(a,n);
    for(int j=0;j<n;j++)
    {
        cout<<a[j]<<" ";
    }
    return 0;
}
时间: 2024-12-27 21:37:12

面试复习(C++)之堆排序的相关文章

Java面试复习提纲

Java面试复习提纲 作者:egg 邮箱:[email protected] 微博:http://weibo.com/xtfggef 博客:http://blog.csdn.net/zhangerqing 本章主要介绍一下面对即将来临的Java面试,我们应该从哪些方面去复习,将重点知识罗列出来,以便从容复习,在每个内容后面附该内容在本博客的地址! 类与对象   Java之美[从菜鸟到高手演变]之类与对象(一) Java之美[从菜鸟到高手演变]之类与对象(二) Java之美[从菜鸟到高手演变]之类

linux常用命令大全(linux基础命令+命令备忘录+面试复习)

作者:蓝藻 时间:2018.7.3 前言 本文特点 授之以渔:了解命令学习方法.用途:不再死记硬背,拒绝漫无目的: 准确无误:所有命令执行通过(环境为centos7),拒绝复制粘贴: 实用性高:命令多为实际工作中用到的,实例讲解,拒绝纯理论: 条理清晰:分类归纳,快速找到想要的命令,拒绝天马行空: 总结性强:只列常用语法,易错情况强调,拒绝照搬照套. 学前须知 适用人群:开发.测试.运维 文档用途:linux命令学习.命令备忘录.面试复习 学习途径:书籍(鸟哥的Linux私房菜).视频:慕课网等

[转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 我之前想总结 一直懒 这次国庆加班 也本来计划来着 感冒了 作罢 .. 作者:蓝藻(罗蓝国度) 创建时间:2018.7.3编辑时间:2019.7.16 前言 本文特点 授之以渔:了解命令学习方法.用途:不再死记硬背,拒绝漫无目的: 准确无误:所有命令执行通过(环境为centos7),拒绝复制粘贴: 实用性高:命令多为实际工作中用到的,实例讲解,拒绝纯理论: 条理清晰:分类归纳,快速找到想要的命

2020年前端面试复习必读文章【超百篇文章/赠复习导图】

前言 之前写过一篇 一年半经验如何准备阿里巴巴前端面试,给大家分享了一个面试复习导图,有很多朋友说希望能够针对每个 case 提供一个参考答案. 写答案就算了,一是「精力有限」,二是我觉得大家还是需要自己「理解总结会比较好」. 给大家整理了一下每个 case 一些还算不错的文章吧(还包括一些躺在我收藏夹里的好文章),大家可以自己看文章总结一下答案,这样也会理解更深刻. 「并不是所有文章都需要看」,希望是一个抛砖引玉的作用,大家也可以锻炼一下自己寻找有效资料的能力 ~ ( 文章排序不分前后,随机排

[Java面试一]面试复习大纲.

一.Java基础部分 (搞定所有技术之后才考虑复习的技术点) 1.数组中的排序问题(笔试或者机试,前者可能性更大) 2.面向对象的理解 3.集合相关的问题,比如hashmap跟hashtable的区别.搞清楚每个集合对象的特性就欧了. 4.多线程启动方式,以及产生死锁的原因和解决办法[多线程问题不是很常问,有精力就复习这块内容] 5.IO流,了解常见的几个流对象以及基本的流操作即可,被机试的可能性比较小. 二.Web基础 (1年工作经验者需要重点复习的技术点) 1.http协议(定义.常见的请求

Java基础面试复习一

做Java业务开发很久了,有些技术快忘了? 来吧,让我们从基础重新开始复习一下--- 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有没有goto? java中的保留字,现在没有在java中使用. 3.说说&和&&的区别. &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为

面试复习重点——数据结构、操作系统、计算机网络、数据库。

必看书籍:剑指offer.程序员面试宝典 来自:腾讯.搜狐.网易.烽火.百度.大众点评.美团.风行 1. 死锁是什么?什么情况下产生?怎么解决? 2. 设计模式(尤其是单例模式,要会写该模式的程序框架,要注意同步问题,怎么实现在要用时才创建) 3. 线程的同步?为什么要同步?线程间通信方式. 4. 进程与线程的区别,进程间通信方式. 5. 容器类:hashmap与hashtable的区别,arraylist与linkedlist的区别 6. 为什么要用多线程,实现多线程的两种方式,有什么区别?

【面试复习篇】kafka知识梳理

由于最近要重新开始找工作,在对过往知识进行梳理时,发现好像每一次重新找工作时都要重新去梳理这些知识,感觉每一次都要重来一遍是不是有点得不偿失,为什么不尝试直接做个知识导图,然后去补充知识点,这样既能快速的复习,又能节约时间,效率自然就提高,说干就干,于是就有了这次分享的kafka导图,知识点并非是自己总结的,而是在尚硅谷的文档基础上进行的汇总,本人分享的东西只是为了知识的交流,没有商业目的! 思维导图的原稿在百度云盘里,需要的话,就去下载吧! 链接:https://pan.baidu.com/s

js基础篇string&amp;&amp;array(应YX同学面试复习要求 - -)

js中的数据类型一共有五个基本数据类型,分别是undefined,null,boolean,number,string. js中的Object类型中包括两大类型:number类型和array类型.而我们现在要说的就是string和array! string 1.length   可以取出字符串有多少个字符                                 "abc".length      结果:3 2.charAt    返回指定索引位置的字符 "abc&qu