)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。

[输入]

第一行包含一个整数n,表示数组的大小。

第二行包含n个整数,表示数组的元素,整数之间以一个空格分开。第三行包含一个整数k。k < n。

[输出]

从大到小输出前k大的数,每个数一行。

[样例输入]

10

4 5 6 9 8 7 1 2 3 0

5

[样例输出]

9

8

7

6

5

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
int a[1000];
void quick_sort(int a[], int start, int end)
{if (start<end){int s = a[start];int i = start;int j = end;//刚开始排序从右向左查找才可以while (i<j){//从右向左查找第一个小于s的值与a[0]交换while (i<j&&a[j] >= s)j--;if (i<j)a[i++] = a[j];//把a[j]的值给a[i],并让i向后走一位//从左向右查找第一个大于等于s的值与a[0]交换while (i<j&&a[i]<s)i++;if (i<j){a[j--] = a[i];//把a[i]的值给此时s所在的地址,并让j向前退一位}}a[i] = s;//因为在之前的交换值过程中a[i]的值已经不是最初的值,所以要变回来quick_sort(a, start, i - 1);//排序枢轴前数列quick_sort(a, i + 1, end);//排序枢轴后数列}
}
int main()
{int n;//输入n个数字scanf("%d", &n);int i = 0;//用于存储数字时的循环计数for (i = 0; i<n; i++) //将n个数字存入数组中scanf("%d", &a[i]);int k;scanf("%d", &k);quick_sort(a, 0, n - 1);//快速排序函数调用for (i = n - 1; k>0; k--, i--) //循环输出排序结果printf("%d\n", a[i]);system("pause");return 0;
}

C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。相关推荐

  1. 给定一个数组int[] array={1,2,3,4,5,6,7,8,9,10}.将其前5个元素与后5 个元素对换,即第1 个元素与第10个元素互换,第2个与第9个元素互换...第5 个与第6 个元素

    public class Main {/*** 给定一个数组int[] array={1,2,3,4,5,6,7,8,9,10}.将其前5个元素与后5 * 个元素对换,即第1 个元素与第10个元素互换 ...

  2. 给定一个数组,输出这个数组中的最大值和最小值

    /*** @author LLJ* @time 2020-5-6 17点06分* @Description 给定一个数组,输出这个数组中的最大值和最小值*/ public class BigAndSm ...

  3. Algorithm:C++语言实现之分治法相关问题(给定实数x和整数n,分治法求xn)

    Algorithm:C++语言实现之分治法相关问题(给定实数x和整数n,分治法求xn) 目录 分治法 1.给定实数x和整数n,分治法求xn 分治法 1.给定实数x和整数n,分治法求xn

  4. 第k大的数——分治法

    问题描述: 初阶:有两个数组A和B,假设A和B已经有序(从大到小),求A和B数组中所有数的第K大. 进阶:有N台机器,每台机器上有一个有序的大数组,需要求得所有机器上所有数中的第K大.注意,需要考虑N ...

  5. 分治法——查找问题 —— 寻找一个序列中第k小的元素和查找最大和次大元素

    查找问题: 问题一:寻找一个序列中第k小的元素 对于给定的含有n个元素的无序序列,求这个序列中第k(1<=k<=n)小的元素 分析思路: 假设无序序列存放在a[0 - n-1]中,若将a递 ...

  6. Cryp.1.大整数相乘---分治法

    from:2017 CCF计算机课程改革导教班. 陈道蓄 11 大整数相乘 – 比长乘更快 小学里就教过整数乘的算法.要计算两个正整数a,b的乘积,你用b中每一位依次乘a,并将结果逐行排列,按b的相应 ...

  7. 大整数相乘 + 分治法(JS)

    使用分治法来实现大整数相乘 相乘的基本原理 如: 1234 * 567 第一步:分解234 -> 12 和 34;567 -> 5 和 67; 第二步:分别计算 首部: 12*5=60中部 ...

  8. C语言实现最大字段和(动态规划法和分治法)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.动态规划法 二.分治法 三.程序总代码 总结 前言 本次将对最大字段和使用C语言实现的两种方法实现,动态规划法和分 ...

  9. 分治法大整数乘法c语言,大整数乘法(分治法)

    #include #include using namespace std; int num(int u) //计算乘数的位数 { int i,num; i=1; num=u/10; while(nu ...

最新文章

  1. LLVM与Clang局部架构与语法分析
  2. c语言计算器实训任务案例,C/C++经典实例之模拟计算器示例代码
  3. Uncode系列开源组件简介
  4. response html 页面,使用response将html拼接页面写到当前浏览器端完成自动提交功能...
  5. [转]virtualbox下安装增强工具简单步骤
  6. POPUP_TO_CONFIRM_STEP
  7. nyoj1047欧几里得
  8. python itertools模块位置_Python高效编程之itertools模块详解
  9. c语言二次函数拟合,二次函数拟合算法
  10. JSP项目报错在build path里找不到javax.servlet.http.HttpServlet的解决方法
  11. 阿里云熊鹰:基于融合、协同系统的边缘云原生架构演进和实践
  12. 微信薅羊毛拼团商城小程序 v2.7.5
  13. 排列和组合、以及数列(五)
  14. ant使用ftp上传数据时配置的一个报错问题
  15. Eclipse 工具的安装和配置
  16. lisp+等高线点线矛盾检查_基于AutoCAD平台地形图高程点与等高线点线矛盾检测方法研究与实现...
  17. 咸鱼前端—CSS浮动
  18. 喜茶“内修”,蜜雪冰城“外练”
  19. 快速学习COSMIC方法之九:如何识别兴趣对象?
  20. json mysql 字段 默认值_MySQL新增JSON类型字段的使用总结

热门文章

  1. 学计算机就业靠谱吗,2018年计算机专业就业怎么样?
  2. 开课吧的python的证书_Python在生活中的几个实用场景,简直太厉害了
  3. stm32f407 6个串口dma_stm32之DMA
  4. ORA-01858: 在要求输入数字处找到非数字字符 13行
  5. 小程序开发(12)-之分页封装
  6. 08服务器许可证安装向导,08_安装部署GRID许可证服务器.pdf
  7. 手机pdf文件转语音_没有电脑也能处理PDF文件,手机里的这个功能太强大!
  8. java国家电网面试试题_国家电网笔试面试相关
  9. python遗传算法计算实例_遗传算法python简单例子(详解)
  10. python中函数定义_Python中函数的定义与使用