堆排序
来源:互联网 发布:iplocation.class.php 编辑:程序博客网 时间:2024/06/05 15:45
快速排序可以用来解决top(n)问题,堆排序用来解决有序的top(n)问题
- //堆排序:建堆,删除:向下调整,小的下沉,下沉到底
// 插入:向上调整,大的上浮,上浮到顶
//折半插入排序#include<iostream>using namespace std;void swap(int a[], int i, int j){ //交换 int c = a[i]; a[i] = a[j]; a[j] = c;}void adjustDown(int a[], int k, int len){//大顶堆,向下调整,小的下沉到底 a[0] = a[k]; for (int i = 2*k; i <= len; i = i * 2){ if (i < len&&a[i + 1]>a[i]) i++; if (a[k] < a[i]){ swap(a,i,k); k = i; } }}void buildMaxHeap(int a[], int len){ //a[]是从1开始 for (int i = len / 2; i > 0; i--){ adjustDown(a, i, len); }}void dsort(int a[], int len){ buildMaxHeap(a, 9); for (int i=9; i > 1; i--){ swap(a, 1, i); adjustDown(a, 1, i-1); } for (int i = 1; i <= len; i++) cout << a[i] << endl;}int main(){ int a[] = { 0, 9,8,7,6,5,4,3,2,1 }; dsort(a, 9);}
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- JavaScript基础(BOM)-Window 对象、History 对象、Location 对象
- POJ 3320 Jessica's Reading Problem (尺取法,时间复杂度O(n logn))
- 模拟频率和数字频率的区别
- java web 之下拉列表默认值
- CCF 201509-3 模板生成系统
- 堆排序
- char转换为字面值和ASSCII
- 51nod 1572 宝岛地图 (预处理四个方向的最大步数优化时间,时间复杂度O(n*m+k))
- ubuntu下安装cunit
- 51nod 1632 B君的连通
- DennisGang博客架构
- 一日一文(4)
- Spring Security+Spring Actuator实践
- 51nod 1021 石子归并 (动态规划 简单代码)