n个数的排序--堆排序
来源:互联网 发布:网络端口怎么拆下来 编辑:程序博客网 时间:2024/06/05 06:12
n个数的排序
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description
LeiQ当上了体育委员,现在老师让他去给班级里的人排队,LeiQ刚学了排序,所以他想以这种方式给班级里的人排队(从矮到高),他想知道排序完成后的结果。
Input
多组输入,每组的第一行是一个正数n(1<=n<=100),第二行是n个数,表示每一个人的高度。
Output
输出排序完成后的结果。
Example Input
3
176 175 174
Example Output
174 175 176
Hint
从小到大排序需要生成一个最大堆,然后每次把堆顶的最大元素放到末尾,即完成了排序。
#include <stdio.h>#include <stdlib.h>#include <iostream>#include <limits.h>#include <algorithm>#define SIZE 10000typedef struct { int *arr; int len;}Heap;void heapInit(Heap &H){ H.arr = (int *)malloc(sizeof(int)*SIZE); H.len = 0; H.arr[0] = INT_MAX;}void heapAdjust(Heap &H,int start,int end){ int temp = H.arr[start]; for(int i = start*2;i<=end;i=i*2) { if(i<end&&H.arr[i+1]>H.arr[i]) { i++; } if(temp>H.arr[i]) { break; } H.arr[start] = H.arr[i]; start = i; } H.arr[start] = temp;}void heapInsert(Heap &H,int data){ H.arr[++H.len] = data; int k = H.len; while(data>H.arr[k/2]) { H.arr[k] = H.arr[k/2]; k = k/2; } H.arr[k] = data;}void Swap(int *a,int *b){ int temp = *a; *a = *b; *b = temp;}void heapSort(Heap &H){ for(int i = H.len;i>0;i--) { Swap(&H.arr[1],&H.arr[i]); heapAdjust(H,1,i-1); }}int main(){ int n; while(~scanf("%d",&n)) { Heap H; heapInit(H); for(int i = 0;i<n;i++) { int temp ; scanf("%d",&temp); //H.arr[++H.len] = temp; heapInsert(H,temp); } heapSort(H); for(int i = 1;i<=H.len;i++) { if(i==1) { printf("%d",H.arr[i]); } else { printf(" %d",H.arr[i]); } } printf("\n"); } return 0;}
阅读全文
0 0
- n个数的排序--堆排序
- n个数的排序
- n个数的排序
- n 个数的排序
- n个数的排序
- n个数的排序
- |3441|n个数的排序
- 求最小的K个数 O(N) 一种实现-基于堆排序
- 从N个数中选取最大的前10个[堆排序版]
- 从N个数中选取最大的前10个[堆排序版]
- 堆排序(最小的K个数)
- 【java】堆排序 最小的k个数
- N个数排序
- n个数的排序 (sdut oj)
- 我的排序,输入n个数,然后进行升降排序
- 堆&&堆排序&&N个数中找出K个最大值&&优先级队列
- 堆排序建堆复杂度为O(n)的证明
- 数列中的n个数排序
- JavaScript_05
- Web系统大规模并发——电商秒杀与抢购
- c++---内存问题---delete p和delete[]p 区别
- ecshop jquery与transport.js冲突解决方案
- 线程调度算法分析
- n个数的排序--堆排序
- Livy:基于Apache Spark的REST服务
- dubbo简介,dubbo架构,dubbo的方法
- poj 3616 Milking Time【最大递增子序列】
- 不同量化平台上财务数据精度的测试
- jquery easyui的datagrid,使用combotree作为editor不能多选的问题
- 连通分量应用
- Hibernate中的检索方式及其四个细节
- MySQL优化原理