堆排序源码
来源:互联网 发布:算法导论适合什么人看 编辑:程序博客网 时间:2024/06/06 03:23
堆排序源码
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>/*打印数组*/void MyPrint(int *arr, int len){for (int i = 0; i < len; i++){printf("%d\t", arr[i]);}printf("\n");}/*数值互换*/void MySwap(int *arr, int i, int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}/*堆调整*/void HeapAdjust(int *arr, int index, int len){int lchild = index * 2 + 1;int rchild = index * 2 + 2;int max = index;if (index < len / 2){if (lchild < len && arr[lchild] > arr[max]){max = lchild;}if (rchild < len && arr[rchild] > arr[max]){max = rchild;}if (max != index){MySwap(arr, index, max);HeapAdjust(arr, max, len);}}}/*非递归堆调整*/void HeapAdjust1(int *arr, int index, int len){int lchild = index * 2 + 1;int rchild = index * 2 + 2;int max = index;while (lchild < len || rchild < len){if (lchild < len && arr[lchild] > arr[max]){max = lchild;}if (rchild < len && arr[rchild] > arr[max]){max = rchild;}if (max != index){MySwap(arr, index, max);index = max;lchild = max * 2 + 1;rchild = max * 2 + 2;}else{break;}}}void HeapSort(int *arr, int len){/*初始化堆*/for (int i = len / 2 - 1; i >= 0; i--){HeapAdjust1(arr, i, len);}for (int i = len - 1; i >= 0; i--){/*交换堆顶和末尾的元素*/MySwap(arr, 0, i);HeapAdjust1(arr, 0, i);}}/*数组生成*/int *RandomArr(int len){int *arr = (int *)malloc(sizeof(int)*len);for (int i = 0; i < len; i++){arr[i] = rand() % 10 + 50;}return arr;}int main(){srand((unsigned)time(NULL));int len = rand() % 5 + 6;int *arr = RandomArr(len);MyPrint(arr, len);HeapSort(arr, len);MyPrint(arr, len);free(arr);system("pause");return EXIT_SUCCESS;}
1 0
- 堆排序C++源码
- 堆排序及其源码
- 堆排序—源码
- 堆排序的源码
- 堆排序源码
- 堆排序(源码 + 详细注释)
- heap-sort-源码-堆排序
- 堆排序源码(heap sort)
- 源码系列:堆排序、优先队列
- 内部排序之三:堆排序(含完整源码)
- 算法导论第六章 堆排序C++源码(附图)
- 算法导论第六章 堆排序C++源码
- 【算法导论】C++参考源码之堆排序
- 堆排序:源码(C++)--伪代码--时间复杂度解析
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- Softmax输出层损失函数及偏导数
- What is a “slug” in django? 什么是django的 slug
- [Leetcode] Combination Sum III
- Android 安卓命名规范
- AfxBeginThread介绍和用法
- 堆排序源码
- 如何检测圆点标定板
- 以太坊go-ethereum常见问题汇总
- 把一个数组中的组合全部列出 [1,2] 1, 12, 2,21
- 把企业当成产品,员工就是你的用户
- SpringBoot项目打包后,找不到文件路径问题,处理方法
- loadrunner11.0 安装破解详解使用教程
- 画圆
- 搭建jQuery Mobile移动应用页面的3个相关框架文件