堆排序C++
来源:互联网 发布:移动数据突然不能上网 编辑:程序博客网 时间:2024/05/02 12:20
#include <vector>#include <iostream>#include <stdio.h>#define left(i) (2*i+1)#define right(i) (2*(i+1))using namespace std;void swap(int &a, int &b){ int c = a; a = b; b = c;}void Heapify(int array[], int len, int pos){ if (pos >= len) return; if (right(pos) < len&&array[right(pos)] > array[pos]) { if (array[right(pos)] >= array[left(pos)]) { swap(array[right(pos)], array[pos]); Heapify(array, len, right(pos)); } else { swap(array[left(pos)], array[pos]); Heapify(array, len, left(pos)); } } else if (left(pos) < len&&array[left(pos)] > array[pos]) { swap(array[left(pos)], array[pos]); Heapify(array, len, left(pos)); }}void BuildHeap(int array[], int len){ for (int i = len / 2; i >= 0; i--) { Heapify(array, len, i); }}void HeapSort(int array[], int len){ BuildHeap(array, len); for (int i = len-1; i >=0; i--) { swap(array[0], array[i]); Heapify(array, i, 0); }}int main(){ int array[10] = { 3, 6, 4, 2, 9, 12, 13, 1, -2, 7 }; HeapSort(array, 10); return 0;}
0 0
- 堆排序----C语言
- 堆排序(C#)
- 堆排序C语言
- HeapSort(堆排序 C++)
- c 最大堆排序
- c语言堆排序
- 堆排序(C语言版)
- 堆排序(C++)
- 【c++】堆排序算法
- 堆排序(C#)
- 堆排序(C#)
- 堆排序 ----- C语言
- C算法--堆排序
- 堆排序 C语言版
- C语言堆排序
- 堆排序c语言
- 排序算法 - 堆排序 (C++)
- 堆排序(C\C++)
- .htaccess做301重定向的几种方法【亲测有效】
- JNI:Java Native Interface
- 如何在zend studio 中添加 emmet插件
- 由于安装oracleasm包的版本导致的问题:
- 复制构造函数 与 赋值函数 的区别
- 堆排序C++
- 监听Android所有Activity的生命周期
- storm配置概览
- POJ2456 Aggressive cows 最大值最小化(二分)
- Spring AOP 详解
- Android开发总结笔记 四大组件之Activity(下) 1-2-3
- NetworkUtil 网络工具类
- abap开发alv篇
- hexo生成sitemap