博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
堆排序算法
阅读量:5298 次
发布时间:2019-06-14

本文共 1162 字,大约阅读时间需要 3 分钟。

#include
#include
using namespace std;void MinHeapFixdown(int a[], int i, int n)//调整堆 { int j, temp; temp = a[i]; j = 2 * i + 1;//i节点的左孩子节点 while (j < n)// 左孩子小于总数 { if (j + 1 < n && a[j + 1] < a[j]) //在左右孩子中找最小的 右孩子节点小于左孩子 j++; //此时j是右孩子 //没有右孩子或者右孩子大于左孩子 最小的就是左孩子 if (a[j] >= temp) //最小的孩子节点大于父节点 就无需调整 break; a[i] = a[j]; //把较小的子结点往上移动,替换它的父结点 i = j;//i更新为孩子节点 j = 2 * i + 1; //j更新为新的i的左孩子节点 } a[i] = temp;//找到合适位置赋给a[i]} void MakeMinHeap(int a[], int n)//初始化最小堆 { for (int i = n / 2 - 1; i >= 0; i--) MinHeapFixdown(a, i, n); } void MinheapsortTodescendarray(int a[], int n) { for (int i = n - 1; i >= 1; i--) { swap(a[i], a[0]); MinHeapFixdown(a, 0, i); } } int main(){ int a[100], n; cin>>n; for(int i = 0; i < n; i++) { cin>>a[i]; } MakeMinHeap(a, n); MinheapsortTodescendarray(a, n); for(i = 0; i < n; i++) cout<
<<' '; return 0;}

 

转载于:https://www.cnblogs.com/pjc20/p/6843362.html

你可能感兴趣的文章
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
关于在Idea 创建Maven项目时,无法在source文件下创建servlet文件问题解决!
查看>>
对 HTTP 304 的理解
查看>>
深入理解css中的margin属性
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Spring EL hello world实例
查看>>
Java抽象类和接口的比较
查看>>
iOS UI控件5-UIPickerView
查看>>
php连接postgresql数据库
查看>>
开发进度一
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
CSS
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
程序集的混淆及签名
查看>>
thinkphp框架 中 ajax 的应用
查看>>
JAVA排序(一) Comparable接口
查看>>