堆排序算法(参考More Window的代码)
来源:互联网 发布:js数组转换json字符串 编辑:程序博客网 时间:2024/05/21 10:08
先写代码,说明随后补上。
// HeapSort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"//较大堆元素下移void HeapBigDown(int arr[], int i, int n){int temp = arr[i];int j = i * 2 + 1;while(j < n){if(j + 1 < n && arr[j+1] < arr[j])//先找到较小元素的索引号{j++;}if(arr[j] >= temp)break;arr[i] = arr[j];i = j;j = i * 2 + 1;}arr[i] = temp;}void HeapSmallDown(int arr[], int i, int n){int temp = arr[i];int j = i * 2 + 1;while(j < n){if(j + 1 < n && arr[j] < arr[j+1])//获取较大子节点的索引{j++;}if(arr[j] < temp)//较大的子节点比父节点还小,则退出break;arr[i] = arr[j];i = j;j = i * 2 + 1;}arr[i] = temp;}//建立堆结构void CreateHeap(int arr[], int n){for(int i = (n - 1)/2; i >= 0; --i){//n为元素总个数HeapBigDown(arr, i, n);}}void CreateBigHeap(int arr[], int n){for(int i = (n-1)/2; i >= 0; --i){HeapSmallDown(arr, i, n);}}void Print(int arr[], int n){for(int i = 0; i < n; i++){printf("%d ", arr[i]);}printf("\n");}void swap(int &n1, int &n2){int temp = n1;n1 = n2;n2 = temp;}void Sort(int arr[], int n){for(int i = n - 1; i >= 0; --i){swap(arr[0], arr[i]);//第一个元素为最小值HeapBigDown(arr, 0, i);//此时i代表元素总个数,在HeapBigDown不会处理arr[i]这个元素}}void SortAscend(int arr[], int n){for(int i = n-1; i >= 0; i--){swap(arr[0], arr[i]);HeapSmallDown(arr, 0, i);}}int _tmain(int argc, _TCHAR* argv[]){int arr[] = {9, 12, 17, 30, 50, 20, 60, 65, 4, 49};CreateBigHeap(arr, 10);//建立大根堆Print(arr, 10);SortAscend(arr, 10);Print(arr, 10);//CreateHeap(arr, 10);//建立小根堆//Print(arr, 10);//Sort(arr, 10);//Print(arr, 10);getchar();return 0;}
0 0
- 堆排序算法(参考More Window的代码)
- 堆排序算法代码
- 堆排序算法的C++实现代码
- 堆排序算法学习(C++代码)
- 关于堆排序(参考自算法导论)
- 堆排序算法二(堆排序算法的应用)
- 【数据结构与算法】【排序】堆排序的代码实现
- 堆排序算法代码实现
- 堆排序算法伪代码
- 快排 和 堆排序算法的细节代码分析
- heapsort(堆排序)的代码实现
- 堆排序的解决算法(基本)
- 堆排序(依据算法导论伪代码)
- 《算法导论》第六章-堆排序(伪代码)
- (日志,《算法导论》.6.2)堆排序,代码
- 【算法导论】C++参考源码之堆排序
- 《算法导论》学习笔记之一排序算法2--堆排序的 实现代码C++
- 堆排序算法原理以及实例代码
- 图像的采样格式为4:2:0
- iOS之TabBar设置普通和选中状态图片
- js捕获键盘按键值,并且实现焦点切换
- 工厂方法模式
- leetcode 144 —— Binary Tree Preorder Traversal
- 堆排序算法(参考More Window的代码)
- crossapp CADrawerController控件使用
- Unsupported major.minor version 51.0 myeclipse2013 2014 同时用
- APP和服务器通讯为什么要用接口?
- <八>java数据结构与算法 队列 与 循环队列
- mysql常见的日期转换格式
- centos 7 图形界面 文本界面切换
- 排序算法小结
- POJ 1836 Alignment