首页 > 其他 > 详细

3110 二叉堆练习3

时间:2017-04-04 16:17:59      阅读:202      评论:0      收藏:0      [点我收藏+]

3110 二叉堆练习3

 

 时间限制: 3 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
 
题目描述 Description

给定N(N≤500,000)和N个整数(较有序),将其排序后输出。

输入描述 Input Description

N和N个整数

输出描述 Output Description

N个整数(升序)

样例输入 Sample Input

5

12 11 10 8 9

样例输出 Sample Output

8 9 10 11 12

数据范围及提示 Data Size & Hint

对于33%的数据 N≤10000

对于另外33%的数据 N≤100,000  0≤每个数≤1000

对于100%的数据 N≤500,000  0≤每个数≤2*10^9

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int a[500000];
 5 int qsort(int l,int r)
 6 {
 7     int i=l;
 8     int j=r;
 9     int mid=a[(l+r)/2];
10     do
11     {
12       while(a[i]<mid)i++;
13       while(a[j]>mid)j--;
14       if(i<=j)
15        {
16            swap(a[i],a[j]);
17         i++;
18         j--;
19        }
20     }while(i<=j);
21     if(j>l)qsort(l,j);
22     if(i<r)qsort(i,r);
23 }
24 int main()
25 {
26     int n;
27     cin>>n;
28     for(int i=1;i<=n;i++)
29      {
30          cin>>a[i];
31      }
32      qsort(1,n);
33      for(int i=1;i<=n;i++)
34       {
35           cout<<a[i]<<" ";
36       }
37 }

 

3110 二叉堆练习3

原文:http://www.cnblogs.com/lyqlyq/p/6665007.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!