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

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

#include 
void swap(int *x, int *y){ int tmp = *x; *x = *y; *y = tmp;}// 将index为根的树调整成对大堆void HeapAdjust(int *array, int index, int length){ int nChild; int lChild; int rChild; for (; 2 * index + 1 < length; index = nChild) { nChild = lChild = 2 * index + 1, rChild = lChild + 1; if (lChild < length - 1 && array[rChild] > array[nChild]) nChild = rChild; if (array[index] < array[nChild]) { swap( &array[index], &array[nChild]); } else { break; } }}// 堆排序void HeapSort(int *array, int length){ int i; //从最后一个非叶节点开始调整,将整个数组调整成最大堆 for (i = length/2 - 1; i >= 0; i--) { HeapAdjust(array, i, length); } //从最后一个元素开始对序列进行调整,不断的缩小调整的范围直到第一个元素 for (i = length - 1; i > 0; i--) { swap(&array[0], &array[i]); HeapAdjust(array, 0, i); }}int main(){ int i; int num[] = {
9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; HeapSort(num, sizeof(num)/sizeof(int)); for (i=0; i < sizeof(num)/sizeof(int); i++) { printf("%d ",num[i]); } return 0;}

 

转载于:https://www.cnblogs.com/aceg/p/6819171.html

你可能感兴趣的文章
hash储存机制
查看>>
[Android学习系列16]Android把php输出的json加载到listview
查看>>
20145205 《信息安全系统设计基础》第14周学习总结
查看>>
6)添加一个窗口的图标
查看>>
POJ - 1422 Air Raid 二分图最大匹配
查看>>
Road Map
查看>>
正则替换中的一个Bug
查看>>
HI3531uboot开机画面 分类: arm-linux-Ubunt...
查看>>
制作U盘启动CDLinux 分类: 生活百科 ...
查看>>
strcpy函数里的小九九
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>