zoukankan      html  css  js  c++  java
  • 快速排序(分治)

    1:输出前k大的数

    总时间限制: 
    10000ms 
    单个测试点时间限制: 
    1000ms 
    内存限制: 
    65536kB
    描述

    给定一个数组,统计前k大的数并且把这k个数从大到小输出。

    输入
    第一行包含一个整数n,表示数组的大小。n < 100000。
    第二行包含n个整数,表示数组的元素,整数之间以一个空格分开。每个整数的绝对值不超过100000000。
    第三行包含一个整数k。k < n。
    输出
    从大到小输出前k大的数,每个数一行。
    样例输入
    10
    4 5 6 9 8 7 1 2 3 0
    5
    样例输出
    9
    8
    7
    6
    5






    源代码

    #include<stdio.h>
    #include<algorithm>
    
    using namespace std;
    
    void swap(int & a, int & b)
    {
    	int tmp = a;
    	a = b;
    	b = tmp;
    }
    
    void QuickSort(int a[], int s ,int e)
    {
    	if(s>=e)
    	return ;
    	int k=a[s];
    	int i=s , j=e;
    	while(i!=j)
    	{
    		while(i < j && a[j] >= k )
    		j--;
    		swap(a[i] , a[j]);	
    		while(i < j && a[i] <= k)
    		i++;
    		swap(a[i] , a[j]);	
    	}
    	QuickSort(a , s , i-1);
    	QuickSort(a , i+1 , e); 
    }
    
    int main()
    {
    	int a[100005];
    	int n;
    	scanf("%d",&n);
    	for(int i=0; i<n; i++)
    	{
    		scanf("%d",&a[i]);
    	}
    	QuickSort(a, 0, n-1);
    	int m;
    	scanf("%d",&m);
    	for(int j=n-1 ; j>n-m-1 ; j--)
    	printf("%d
    ",a[j]);
    	
    	return 0;
     } 













    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    将kali linux装入U盘 制作随身携带的kali linux
    arch/manjaro linux configuration
    python资源

    JSP通过AJAX获取服务端的时间,在页面上自动更新
    Spark基础
    MapReduce基础
    HDFS基础
    C#输出杨辉三角形
    Java窗体居中显示的2种方法
  • 原文地址:https://www.cnblogs.com/h-hkai/p/7406494.html
Copyright © 2011-2022 走看看