您的位置:首页 > 其它

sort

2015-07-22 17:23 197 查看

sort

Time Limit : 6000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 194   Accepted Submission(s) : 32

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

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
/*注意格式问题*/

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
int Partition(int array[], int left, int right)
{
 int i,j;
 int temp;
 j=left-1;
 for (i=left;i<=right;i++)
 {
  if (array[i]<= array[right])
  {
   j++;
   temp=array[j];
   array[j]=array[i];
   array[i]=temp;
  }
 }
 return j;
}
void QuikSort(int array[], int left, int right)
{
 int pivot;
 if (left<right)
 {
  pivot=Partition(array,left,right);
  QuikSort(array,left,pivot-1);
  QuikSort(array,pivot+1,right);
 }
}
int main()
{     
 int n,m,i;
 while(scanf("%d%d",&n,&m)!=EOF)
 {
 
 int *a=(int *)malloc(sizeof(int)*n);
 for(i=0;i<n;i++)
 {
  scanf("%d",&a[i]);
 }
 QuikSort(a,0,n-1);
 for(i=n-1;i>n-m-1;i--)
 {
  
  printf("%d",a[i]);
  if(i!=(n-m))
     printf(" ");
  
 }
 printf("\n");
 free(a);
 }
 return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: