HDU 1157 快速排序

原创 2012年03月27日 09:06:45

      快速排序的水题,,用sort应该也可以,用来练习快速排序了。。题目:

Who's in the Middle

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4266    Accepted Submission(s): 2148


Problem Description
FJ is surveying his herd to find the most average cow. He wants to know how much milk this 'median' cow gives: half of the cows give as much or more than the median; half give as much or less. 

Given an odd number of cows N (1 <= N < 10,000) and their milk output (1..1,000,000), find the median amount of milk given such that at least half the cows give the same amount of milk or more and at least half give the same or less.
 

Input
* Line 1: A single integer N 

* Lines 2..N+1: Each line contains a single integer that is the milk output of one cow.
 

Output
* Line 1: A single integer that is the median milk output.
 

Sample Input
5 2 4 1 3 5
 

Sample Output
3

ac代码:

#include <iostream>
#include <cstdio>
using namespace std;
const int N=100005;
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;
  while(~scanf("%d",&n)){
    for(int i=0;i<n;++i)
		scanf("%d",&num[i]);
	quick_sort(0,n-1);
	printf("%d\n",num[n/2]);
  }
  return 0;
}


快速排序——HDU 1425

快排
  • u013351484
  • u013351484
  • 2014年08月26日 09:05
  • 761

hdu1425 sort 快速排序

sort Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • kyoma
  • kyoma
  • 2017年02月28日 18:47
  • 203

sort (HDU_1425) 快速排序

sort Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • Keeping111
  • Keeping111
  • 2016年03月13日 18:53
  • 177

HDU 1157 快速排序

快速排序的水题,,用sort应该也可以,用来练习快速排序了。。题目: Who's in the Middle Time Limit: 2000/1000 MS (Java/Others) ...
  • wmn_wmn
  • wmn_wmn
  • 2012年03月27日 09:06
  • 1604

hdu排序练习

  • 2012年04月14日 10:48
  • 93B
  • 下载

HDU 1157

我竟然在这么水的题目上WA了一次,可是它没说要多组数据啊。我的英语啊!!!上题目: Problem Description FJ is surveying his herd to find the...
  • sky_miange
  • sky_miange
  • 2014年12月15日 13:10
  • 697

HDU 1157 Who's in the Middle (快速排序)

Problem Description FJ is surveying his herd to find the most average cow. He wants to know how much...
  • kavu1
  • kavu1
  • 2015年08月17日 15:43
  • 181

经典算法之一:快速排序

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个...
  • hurmishine
  • hurmishine
  • 2016年12月20日 21:28
  • 1126

快速排序

快速排序 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte 总提交 : 1600 测试通过...
  • usher_ou
  • usher_ou
  • 2017年04月06日 16:12
  • 109

HDU 1157(Who's in the Middle) 快速排序

此题快速排序可直接解: #include #include #include void QuickSort(int arry[],int left,int right) { int i,...
  • B08370108
  • B08370108
  • 2014年11月11日 21:16
  • 320
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 1157 快速排序
举报原因:
原因补充:

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