hdu 1425:sort(排序,经典题。快排模板)
sort
Time Limit : 6000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 3 Accepted Submission(s) : 2
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
Output
Sample Input
5 3
3 -35 92 213 -644
Sample Output
213 92 3
Hint
请用VC/VC++提交
Author
Source
#include <iostream>
#include <stdio.h>
using namespace std;
int a[];
int main()
{
int n,m;
while(cin>>n>>m){
int i,j;
for(i=;i<=n;i++)
scanf("%d",&a[i]);
for(i=;i<=n-;i++)
for(j=;j<=n-i;j++)
if(a[j]>a[j+]){
int t;
t=a[j];a[j]=a[j+];a[j+]=t;
}
for(i=n;i>=n-m+;i--){
if(i==n-m+)
cout<<a[i]<<endl;
else
cout<<a[i]<<' ';
}
}
return ;
}
惭愧的是,为了省事,这道题我直接套用了<algorithm>中的sort()函数,从网上得知该函数使用的是内省排序,时间复杂度是O(nlogn),应付这道题是够了,时间用了500+MS。当然你也可以采用快排,时间复杂度也是O(nlogn),对付这道题也没问题。
注意:输出前m个数的时候,最后一个数后面不能带空格' ',否则提交会格式错误。
有时间会重新用这道题练习一下,低效率的算法通过不了这道题。
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[];
int main()
{
int n,m;
while(cin>>n>>m){
int i;
for(i=;i<=n;i++) //输入
scanf("%d",&a[i]);
sort(a+,a+n+); //从小到大排序
for(i=n;i>=n-m+;i--){ //输出前m个大的数
if(i==n-m+)
cout<<a[i]<<endl;
else
cout<<a[i]<<' ';
}
}
return ;
}
| Run ID | Submit Time | Judge Status | Pro.ID | Exe.Time | Exe.Memory | Code Len. | Language | Author |
| 10133960 | 2014-02-20 15:49:42 | Accepted | 1425 | 593MS | 2284K | 343 B | C++ | freecode |
正好看到数据结构内排序这一部分,想起了这道题,拿它来练习快速排序正好。
注意:输入的时候尽量用scanf(),用cin会超时。
快排模板:
void quicksort(int a[],int s,int t) //对a[]的第s个到第t个元素进行从小到大的排序
{
int i=s,j=t;
int tmp = a[s];
if(s<t){ //区间内元素剩0个或者1个的时候停止
while(i<j){
while(i<j && a[j]>=tmp)
j--;
a[i] = a[j];
while(i<j && a[i]<=tmp)
i++;
a[j] = a[i];
}
a[i] = tmp;
quicksort(a,s,i-); //对左区间递归排序
quicksort(a,i+,t); //对右区间递归排序
}
}
本题代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int a[];
void quicksort(int a[],int s,int t)
{
int i=s,j=t;
int tmp = a[s];
if(s<t){ //区间内元素剩0个或者1个的时候停止
while(i<j){
while(i<j && a[j]>=tmp)
j--;
a[i] = a[j];
while(i<j && a[i]<=tmp)
i++;
a[j] = a[i];
}
a[i] = tmp;
quicksort(a,s,i-); //对左区间递归排序
quicksort(a,i+,t); //对右区间递归排序
}
}
int main()
{
int i;
int n,m;
while(cin>>n>>m){
for(i=;i<=n;i++)
scanf("%d",&a[i]);
quicksort(a,,n);
for(i=n;i>=n-m+;i--){
printf("%d",a[i]);
if(i!=n-m+)
printf(" ");
else
printf("\n");
}
}
return ;
}
| Run ID | Submit Time | Judge Status | Pro.ID | Exe.Time | Exe.Memory | Code Len. | Language | Author |
| 10361233 | 2014-03-21 19:40:50 | Accepted | 1425 | 468MS | 2276K | 693 B | C++ | freecode |
Freecode : www.cnblogs.com/yym2013
hdu 1425:sort(排序,经典题。快排模板)的更多相关文章
- E题hdu 1425 sort
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1425 sort Time Limit: 6000/1000 MS (Java/Others) M ...
- leetcode 75 Sort Colors 计数排序,三路快排
解法一:计数排序:统计0,1,2 的个数 时间复杂度:O(n) 空间复杂度:O(k) k为元素的取值范围, 此题为O(1) class Solution { public: void sortC ...
- hdu - 6281,2018CCPC湖南全国邀请赛F题,快排
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6281 题意: 根据已给出的式子,进行排序,然后输出排完序后原先的下表. 题解:用结构体保存,在用结构体 ...
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
#include<stdio.h> #include<malloc.h> #define LEN sizeof(struct Student) struct Student / ...
- HDU 1425 sort(堆排序/快排/最大堆/最小堆)
传送门 Description 给你n个整数,请按从大到小的顺序输出其中前m大的数. Input 每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不 ...
- hdu 1425 sort 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1425 常规的方法是对输入的数从大到小进行排序(可以用sort或qsort),然后输出前m大的数. 不过 ...
- HDU 1425 sort hash+加速输入
http://acm.hdu.edu.cn/showproblem.php?pid=1425 题目大意: 给你n个整数,请按从大到小的顺序输出其中前m大的数. 其中n和m都是位于[-500000,50 ...
- HDU 1425 sort 【哈希入门】
题意:给出n个数,输出前m大的数 和上一题一样,将输入的数加上一个极大地值作为地址 #include<iostream> #include<cstdio> #include&l ...
- HDU 1425 sort 题解
选择出数列中前k个最大的数. 这里由于数据特殊.所以能够使用hash表的方法: #include <cstdio> #include <algorithm> #include ...
随机推荐
- potplayer 网页调用potplayer播放本地视频
网页调用potplayer播放本地视频 CreateTime--2018年1月3日10:36:24 Author:Marydon 源码展示: <!DOCTYPE html> <h ...
- 轻轻的我走了,正如我轻轻的来——Duilib无焦点窗体的实现
在Windows编程中,我们已经习惯了一个窗体从创建到显示并获得焦点. 我们总感觉一个窗体创建出来获得焦点是理所理所当然的.一个窗体仅仅要显示就必须获得焦点.一个新窗体显示时.会收到到WM_SETFO ...
- python 的集合 set()操作
Python 的集合 set(),是一个无序不重复元素集,可以用于关系测试和消除重复元素. 有以下运算: 1.创建一个set ()集合: 2.add:增加集合元素 3.clea ...
- Android中的Layout_weight终极研究
以前在做UI布局时,也经常用Layout_weight属性,有时会遇到莫名其妙的布局问题,但总没研究懂.一直想做深入分析,但总是没耐心.遇到问题就找替代方法解决,但终非长久之计.这次下决心给它弄透! ...
- 对log4cpp进一步封装
//Mylog.h如下: #pragma once//#include <iostream>#include <log4cpp/Category.hh>#include < ...
- IntelliJ IDEA 学习(一):IntelliJ IDEA15 破解方法(已验证)
新的破解方法: 1.进到文件夹中:C:\Windows\System32\drivers\etc ,找到hosts文件,用记事本编辑 2.如果没有找到hosts文件,可在查看设置中勾选“显示隐藏的项目 ...
- OpenCV2马拉松第24圈——轮廓提取
计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27979267 收入囊中 在图片中找到轮廓而且描绘 ...
- git配置文件读取顺序
作者:zhanhailiang 日期:2014-11-03 git包括三个配置文件: /etc/gitconfig 文件:系统中对全部用户都普遍适用的配置. 若使用git config 时用' –sy ...
- atitit.thumb生成高质量缩略图 php .net c++ java
atitit.java thumb生成高质量缩略图 php .net c++ 1. 图像缩放(image scaling)---平滑度(smoothness)和清晰度(sharpness) 1 2. ...
- 一个表空间offline后alert日志报ORA-01135 和ORA-01110的问题
本文是原创文章.转载请注明出处:http://blog.csdn.net/msdnchina/article/details/44336789 近期遇到一个案例,是将一个表空间offline之后,al ...