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 sort(快速排序)

sort Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total...

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
  • 99

快速排序浅谈——(解题报告)HDU1157和POJ2388---Who's in the Middle

快速排序(快排)作为排序算法中较为常用和重要的一种,有其重要的地位,但初学可能有些晦涩,本文将较为详细的结合Who’s in the Middle这道题来讲讲快速排序的奥秘!首先是快排的简单介绍,它是...

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

Who's in the Middle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth...

HDU 1425 sort 快速排序

sortTime Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi...
  • dl2hq
  • dl2hq
  • 2017-03-10 11:43
  • 50

绝对值排序 (HDU_1157) 堆排序

绝对值排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su...

超快速排序算法

  • 2016-04-20 13:34
  • 89KB
  • 下载

算法导论二:快速排序

快速排序采用的是分治策略,其方法是将一个数组a[p,r]划分为两个子数组a[p,q-1],a[q+1,r],使其左子数组元素中的元素均小于等于a[q],右子数组元素均大于a[q],并递归划分两个子数组...

JAVA实现快速排序

  • 2017-05-23 21:18
  • 69KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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