堆排序
来源:互联网 发布:马略改革 知乎 编辑:程序博客网 时间:2024/06/05 12:49
之前学过,但是没有写过。今天有练习的必要,就写了一遍。
//堆排序#include <bits/stdc++.h>using namespace std;void swap(int &a, int &b){ a^=b; b^=a; a^=b;}void heapAdjust(int a[] , int start_pos , int length){ // 将数组0-(length-1)调整成大顶堆 int nChild ; int nTemp; int i = start_pos ; for (;i*2+1<length ; i = nChild){ nChild = 2*i+1; //左孩子 if (nChild<length-1 && a[nChild]<a[nChild+1]) nChild++; if ( a[nChild]>a[i] ){ swap(a[i],a[nChild]); } else break; }}void heapSort (int a[] , int length){//堆排序 //将数组调整成大顶堆 for (int i = length/2-1; i >=0 ;--i){ heapAdjust(a,i,length); } for (int i = length - 1 ; i>0 ;--i){ swap(a[i],a[0]);//交换第一个和最后一个,让前i个的最大元素位于ai heapAdjust(a,0,i); }}int main(){ int n ; int a[100]; cin >> n ; for (int i = 0 ; i < n ; ++i) cin>> a[i]; heapSort(a,n); for (int i = 0 ; i < n ; ++i) cout<< a[i] <<" "; return 0;}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- java排序
- HPUX下虚拟技术IVM的使用整理
- NOIP2014提高组A.石头剪刀布
- OpenCV 系列 --- 交互(一)滑动条
- 三种快排及四种优化方式
- 堆排序
- C语言中文件操作笔记
- 电路设计中三极管和MOS管做开关用时的区别
- 程序设计基础(C语言)课程主页-2016级
- python爬虫架构
- Markdown入门
- POJ 2485
- leetCode练习(21)
- 导入android项目出现:出现Unable to resolve target 'android-8'错误的解决方法