《算法导论》排序算法
来源:互联网 发布:zepto.js的animate 编辑:程序博客网 时间:2024/06/11 19:54
1.堆排序
#include <iostream>#define N 100using namespace std;int parent(int i) {return i / 2;}int left(int i) {return 2 * i;} int right(int i) {return 2 * i + 1;}void maxHeapify(int array[], int i, int heapSize) {int largest, temp;int l = left(i);int r = right(i);if(l < heapSize && array[l] > array[i])largest = l;elselargest = i;if(r < heapSize && array[r] > array[largest])largest = r;if(largest != i) {temp = array[i];array[i] = array[largest];array[largest] = temp;maxHeapify(array, largest, heapSize); }}void buildMaxHeap(int array[], int n) {int heapSize = n;for(int i = (n - 1) / 2; i >= 0; i--)maxHeapify(array, i, heapSize);}void heapSort(int array[], int n) {int i, temp, heapSize;heapSize = n;buildMaxHeap(array, n);for(i = n - 1; i >= 0; i--) {temp = array[0];array[0] = array[i];array[i] = temp;heapSize--;maxHeapify(array, 0, heapSize);}}int main() {freopen("001.in", "r", stdin);int i, n;int array[N];cin>>n;for(i = 0; i < n; i++)cin>>array[i];heapSort(array, n);for(i = 0; i < n; i++)cout<<array[i]<<endl;return 0;}
测试数据
1427 17 3 16 13 10 1 5 7 12 4 8 9 0
阅读全文
0 0
- 《算法导论》排序算法
- 《算法导论》排序算法
- 算法导论:插入排序
- 算法导论 堆排序
- 算法导论 计数排序
- 【算法导论】拓扑排序
- 【算法导论】拓扑排序
- 【算法导论】计数排序
- 算法导论--堆排序
- 算法导论:排序
- 算法导论-快速排序
- 【算法导论】 堆排序
- 插入排序【算法导论】
- 【算法导论】归并排序
- 【算法导论】快速排序
- [算法导论]归并排序
- 【算法导论笔记】排序
- 算法导论-----插入排序
- 专访爱普生中国市场负责人:磨剑六年 爱普生如何用墨仓式打印机征服市场
- qt交叉编译问题
- opencv(十四)--模板匹配
- IT伦理与道德之计算机病毒
- jQuery的$.fn与$.extend使用结合
- 《算法导论》排序算法
- B树、B-树、B+树、B*树
- Linux运维工程师,你能把iptables玩转麽?
- 模拟
- 裸体学霸又来了...一年一度的剑桥好屁股出结果了...
- Sublime Text3配置Python运行环境(实用)
- spark2 sql读取json文件的格式要求
- spark2.2 SparkSession思考与总结1
- spark2.2以后版本任务调度将增加黑名单机制