C++实现的堆排序
来源:互联网 发布:域名注册注意 编辑:程序博客网 时间:2024/05/14 21:27
要求:用一维数组建堆,然后堆排序。
输入:10
1 3 4 6 5 2 10 8 9 7
输出:1 2 3 4 5 6 7 8 9 10
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int da[100];bool cmp(int a,int b){return a<b;}void heapadjust(int s[],int i,int size,bool compare(int,int)){ int lchild=i<<1; int rchild=i<<1|1; int mmax=i; if(i<=size/2) { if(lchild<=size&&compare(s[mmax],s[lchild]))mmax=lchild; if(rchild<=size&&compare(s[mmax],s[rchild]))mmax=rchild; if(mmax!=i) { swap(s[i],s[mmax]); heapadjust(s,mmax,size,compare); } }}void heapsort(int *s,int size,bool compare(int,int))//堆排序{ s--; for(int i=size/2;i>=1;i--) heapadjust(s,i,size,compare);for(int i=size;i>1;i--) { swap(s[1],s[i]); heapadjust(s,1,i-1,compare); }}int main(){//freopen("123.txt","r",stdin);int n,i;while(cin>>n){for(i=0;i<n;i++)scanf("%d",&da[i]);heapsort(da,n,cmp);//参数(数组首地址,个数,比较函数)for(i=0;i<n;i++)printf("%d ",da[i]);}return 0;}
0 0
- 堆排序的C实现
- 堆排序的实现(c++)
- 堆排序的实现-C语言
- 堆排序的C语言实现
- 【C++】CLRS上的堆排序实现
- 堆排序的c语言实现
- 堆排序的C语言实现
- C语言堆排序的实现
- 排序算法的C语言实现-堆排序
- 常见排序算法的C语言实现之堆排序
- 排序之堆排序的C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序--C语言实现
- C语言实现堆排序
- 堆排序(c实现)
- 汉字转换拼音_WinDev
- linux常用关机命令
- 算法java实现--概率算法--随机数
- 为什么是C盘,A盘B盘去哪了?
- c++ primer plus(第6版)中文版 第十三章编程练习答案
- C++实现的堆排序
- javaweb_Servlet简介
- KPROCESS IDT PEB Ldr 《寒江独钓》内核学习笔记(3)
- SCP 命令
- 终端关闭后程序继续运行 & nohup setip disown jobs
- vim 快捷键使用
- objective-c property
- 简要记录毕业来几年的经历和今年的目标
- parseDouble