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;
}


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

HDU 1425 sort(快速排序)

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

HDU1106 排序(解法二)(废除!!!)

本文废除!!! 请点击以下的参考链接!!! 参考链接:HDU1106 排序【字符串+整数+排序】。 问题链接:HDU1106 排序。 问题简述:参见上述链接。 问题分析:这个程序...

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

hdu 3065 病毒侵袭持续中(AC自动机)

病毒侵袭持续中 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...
  • acm_cxq
  • acm_cxq
  • 2016年07月16日 23:54
  • 580

快速排序浅谈——(解题报告)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_1157) 堆排序

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

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

单链表快速排序

  • 2017年11月03日 09:36
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 1157 快速排序
举报原因:
原因补充:

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