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

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

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 using namespace std;11 12 void Heapfy(int a[], int idx, int max)//堆调整13 {14 int left = idx * 2 + 1;15 int right = left + 1;16 int largest = idx;17 if (left
a[largest])// 大于号是升序,小于号是降序18 {19 largest = left;20 }21 if (right < max&&a[right]>a[largest])// 大于号是升序,小于号是降序22 {23 largest = right;24 }25 if (largest != idx)26 {27 int temp = a[largest];28 a[largest] = a[idx];29 a[idx] = temp;30 Heapfy(a, largest, max);31 }32 }33 void buildHeap(int a[], int ll)34 {35 int len = ll;36 for (int i = len / 2 - 1; i >= 0; --i) //第一次,将数据调整为堆37 {38 Heapfy(a, i, len);39 }40 for (int i = len - 1; i >= 1; --i) // 利用堆进行排序41 {42 int temp = a[0];43 a[0] = a[i];44 a[i] = temp;45 Heapfy(a, 0, i);46 }47 }48 int main()49 {50 int a[] = { 1, 5, 8, 6, 6, 48, 23, 0, 4, 0 };51 int n = sizeof(a) / sizeof(a[0]);52 cout << n << endl;53 for (int i = 0; i < n; i++)54 {55 cout << a[i] << " ";56 }57 cout << endl;58 buildHeap(a, n);59 for (int i = 0; i < n; i++)60 {61 cout << a[i] << " ";62 }63 cout << endl;64 65 system("pause");66 return 0;67 }

 

转载于:https://www.cnblogs.com/wujufengyun/p/6830764.html

你可能感兴趣的文章
基础细节知识
查看>>
树状数组求区间最大值
查看>>
一个简单的PHP网站结构
查看>>
Redis 学习之简介及安装
查看>>
jsp简单的学习
查看>>
[LeetCode][JavaScript]Number of 1 Bits
查看>>
[LeetCode][JavaScript]Plus One
查看>>
C语言-06复杂数据类型-01数组
查看>>
vue 图片预览插件
查看>>
深入解析:分布式系统的事务处理经典问题及模型
查看>>
python的2种字符串格式化输出
查看>>
Netsharp快速入门(之14) 销售管理(报表A 热销滞销品统计)
查看>>
配置 SQL Server Email 发送以及 Job 的 Notification通知功能
查看>>
Makefile 工程管理
查看>>
笔记本键盘失灵怎么办? 笔记本电脑按键失灵的一般解决办法
查看>>
寻找最大的数
查看>>
【转】java中float与byte[]的互转 -- 不错
查看>>
sockaddr和sockaddr_in的区别
查看>>
基础练习1
查看>>
左旋转字符串
查看>>