堆排序
来源:互联网 发布:买卖股票的软件 编辑:程序博客网 时间:2024/05/20 18:43
堆排序的过程简洁来说就是,先建堆(我这里写的是最大堆),再依次取出堆头的元素放到堆尾,将堆的元素数减1,每次都重新调整堆。
void insert_heap(int save,int low,int high) //调整堆,由上往下从low到high调整。low当做一个空位。 {int large = low*2+1; //左子节点 while(large<=high){if(large<high&&a[large]<a[large+1]) //先比较左右子节点,选最大者 large++;if(a[large]<save) //再与最后的节点比较 break;a[low] = a[large];low = large;large = low*2+1;}a[low] = save;}void heap_build(int *a,int n) //建堆,从中间开始由下往上建堆 {for(int low=n/2-1;low>=0;low--){int save = a[low]; insert_heap(save,low,n-1); //由low到n-1进行调整 }}void head_sort(int *a,int n) //堆排序 {heap_build(a,n);for(int last=n-1;last>0;last--){int save = a[last];a[last] = a[0]; //每次都取出头节点insert_heap(save,0,last-1); //由上往下调整 }}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 日语输入法使用
- struts2导出excel笔记
- Quartz.Net的使用(简单配置方法)定时任务框架
- 研一的人工智能课程作业
- Girl_iOS100天学iOS的第六天(打酱油的一天)
- 堆排序
- 一个猜字游戏
- 『常识』系统架构_软件架构风格概述
- java.lang.NoSuchFieldError: deferredExpression
- 实验四【1.字符串的实现】
- 星星(用for循环)
- hdu 1312 Red and Black
- hdu4310 Hero(贪心)
- java23设计模式之——抽象工厂模式(Abstract Factory)