8、C程序 数组排序之[堆排序](是的,首先要学会树(数据结构的一种))
来源:互联网 发布:淘宝win10激活密匙 编辑:程序博客网 时间:2024/06/05 12:02
#include <stdio.h>// 交换函数void swap (int a[], int i, int j){int tmp = a[i];a[i] = a[j];a[j] = tmp;}// 打印数组void printA (int *a, int len){int i;for (i = 0; i < len; i++){printf ("%4d", a[i]);}printf ("\n");}// a 代表一个数组// i 代表要调整的结点的下标// len 数组的长度void heapify(int *a, int i, int len){int left = 2 * i + 1; // 左孩子结点下标int right = 2 * i + 2; // 右孩子结点下标int max = i; // 三个节点中最大元素的下标if (left < len && a[left] > a[max])max = left;if (right < len && a[right] > a[max])max = right;if (max != i) // 当前父节点不是所有结点中最大的元素,需要做调整{swap (a, i, max);heapify (a, max, len); // 调整被交换的结点}}void heapSort (int *a, int len){// 建堆int i;for (i = len/2 - 1; i >= 0; i--){heapify (a, i, len);}// 排序for (i = len-1; i > 0; i--){swap (a, 0, i); // 拿堆顶元素与队尾元素进行交换len--; // 找到一个最大元素以后堆大小减1heapify (a, 0, len); // 调整堆顶元素}}int main(){int a[10] = {9,6,8,0,3,5,2,4,7,1};int len = sizeof(a) / sizeof(a[0]);heapSort(a, len);printA (a, len);return 0;}
阅读全文
0 0
- 8、C程序 数组排序之[堆排序](是的,首先要学会树(数据结构的一种))
- 数据结构之(堆排序)
- C/C++学习之C提高----C程序数组排序、数据类型(大小,别名,封装)、变量、程序的内存四区模型(栈,堆,全局,代码区)
- 数据结构之二叉堆(构建堆,堆排序)-(七)
- 数据结构之堆排序(六)
- 数据结构之堆排序(java)
- C语言基本数据结构之五(折半插入,堆排序,冒泡排序,快速排序,并归排序)
- 数组实现堆排序(c++)
- 数据结构算法之排序系列Java、C源码实现(4)--堆排序
- 数据结构之---C语言实现堆排序
- 数据结构之堆排序C语言实现
- 数据结构实验之排序四:寻找大富翁(堆排序)
- 数据结构实验之排序四:寻找大富翁(堆排序)
- 走进数据结构之排序(六)---堆排序
- 数据结构实验之排序四:寻找大富翁(堆排序)
- 数据结构排序之堆排序
- 数据结构--排序之堆排序
- 数据结构之排序:堆排序
- android中的window总结
- 将excel文件中的商品数据导入到数据库,并实现相关检索以及模糊搜索功能
- C++:面向对象的基本特征
- D
- httpUrlConnection
- 8、C程序 数组排序之[堆排序](是的,首先要学会树(数据结构的一种))
- 从微服务开始(一):优势和注意事项
- Arcade Game Gym
- C语言数据结构之队列篇
- JS中的部分Math的对象
- 手动ghost备份系统的方法
- 伺服-视觉球和平板系统的重复和谐振控制器的比较分析(译)
- 代理模式
- 强化练习5:找合法帧