HDU 1425 快排

原创 2012年03月27日 08:38:31

     第一次写快排的题,,留下做个模板。这道题用sort也是可以过的。题目:

sort

Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 15172    Accepted Submission(s): 4363


Problem Description
给你n个整数,请按从大到小的顺序输出其中前m大的数。
 

Input
每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。
 

Output
对每组测试数据按从大到小的顺序输出前m大的数。
 

Sample Input
5 3 3 -35 92 213 -644
 

Sample Output
213 92 3

ac代码:

#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
const int N=1000005;
int num[N];
int partition(int low,int high){
	int i=low,j=high,key=num[low];
	while(i<j){
	  while(i<j&&num[j]>key) --j;
	  int t=num[i]; num[i]=num[j];num[j]=t;
	  while(i<j&&num[i]<key)  ++i;
	  t=num[i];num[i]=num[j];num[j]=t;
	}
	return i;
}
void quick_sort(int low,int high){
  if(low<high){
    int x=partition(low,high);
    quick_sort(low,x-1);
    quick_sort(x+1,high);
  }
}
int main(){
  //freopen("11.txt","r",stdin);
  int n,m;
  while(~scanf("%d%d",&n,&m)){
    for(int i=0;i<n;++i)
		scanf("%d",&num[i]);
	quick_sort(0,n-1);
	for(int i=n-1;i>n-m;--i)
		printf("%d ",num[i]);
	printf("%d",num[n-m]);
	printf("\n");
  }
  return 0;
}


普林斯顿公开课 算法3-3:三路快排

很多时候排序是为了对数据进行归类,比如对城市进行排序,对员工的职业进行排序。这种排序的特点就是重复的值特别多。 如果使用普通的快排对这些数据进行排序,会造成N^2复杂度,但是归并排序...
  • caipeichao2
  • caipeichao2
  • 2014年06月06日 16:59
  • 1495

快排的java两种实现方式

快排是最基础的几个排序算法之一,今天再来
  • qarkly112649
  • qarkly112649
  • 2014年06月29日 17:24
  • 29130

超排序——(桶排序 + 快排)

think: 1题目名字叫做超排序,自己才疏学浅,依据查到的知识,阐述一下自己对超排序尚不成熟的想法,我们都知道快速排序速度快,但是遇到相同数据的时候不稳定,自己之前看到过一个数据时间复杂度那时可能...
  • BlessingXRY
  • BlessingXRY
  • 2017年02月22日 17:12
  • 304

【算法】5 传说中的快排是怎样的,附实现示例

快速排序(英文名:Quicksort,有时候也叫做划分交换排序)是一个高效的排序算法,由Tony Hoare在1959年发明(1961年公布)。当情况良好时,它可以比主要竞争对手的归并排序和堆排序快上...
  • NoMasp
  • NoMasp
  • 2015年06月02日 23:02
  • 11547

快排函数qsort调用的使用细则

来源于:http://wenku.baidu.com/view/3567c018964bcf84b9d57b2f.html 关于快排,其原理及实现网上可以找到很多,我给出的那些动画视频链接里...
  • xiaoxinxinev5
  • xiaoxinxinev5
  • 2016年12月09日 10:51
  • 222

堆排序与快排比较

昨天做腾讯的笔试题中有一道选择题,问几种排序的最坏情况,快排,冒泡大家肯定都知道是n^2,当时选项中有一个堆排序,不是很确定,下来就把这些收集了一下 表格转自http://www.cnblogs.co...
  • qq_28352347
  • qq_28352347
  • 2017年04月04日 19:36
  • 893

三种快排及四种优化方式

1、快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。...
  • hacker00011000
  • hacker00011000
  • 2016年08月10日 20:46
  • 12427

快排的c++实现(两种实现方式)

快速排序算法是现在用的最广的排序算法,也是效率最高的。它有两种实现方式,一种是定轴法,另外一种是挖坑法。这里简单介绍一下两种实现方法的思想,并附上C++实现代码。 (一)定轴法: 1.备份对轴...
  • jeryjeryjery
  • jeryjeryjery
  • 2016年10月22日 20:51
  • 3933

快排最优时间复杂度,平均时间复杂度和最差时间复杂度分析

我们来分析一下快速排序法的性能。快速排序的时间性能取决于快速排序递归的深度,可以用递归树来描述递归算法的执行情况。如图9‐9‐7所示,它是{50,10,90,30, 70,40,80,60,20}在快...
  • HN_gsf
  • HN_gsf
  • 2016年08月19日 12:46
  • 8080

STL之sort快排小结

/********************************************* sort函数的用法(恰好与qsort相反)//每有新发现都会持续更新 做ACM题的时候,排序是一种经常要用...
  • xxiaobaib
  • xxiaobaib
  • 2016年04月15日 12:56
  • 1781
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 1425 快排
举报原因:
原因补充:

(最多只允许输入30个字)