2018第九届蓝桥杯C++省赛B组[最新题解汇总]

标题:快速排序。

以下代码可以从数组a[]中找出第k小的元素。

它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的。

请仔细阅读分析源码,填写划线部分缺失的内容。

#include <stdio.h>

int quick_select(int a[], int l, int r, int k) {
int p = rand() % (r - l + 1) + l;
int x = a[p];
{int t = a[p]; a[p] = a[r]; a[r] = t;}
int i = l, j = r;
while(i < j) {
while(i < j && a[i] < x) i++;
if(i < j) {
a[j] = a[i];
j--;
}
while(i < j && a[j] > x) j--;
if(i < j) {
a[i] = a[j];
i++;
}
}
a[i] = x;
p = i;
if(i - l + 1 == k) return a[i];
if(i - l + 1 < k) return quick_select( _____________________________ ); //填空
else return quick_select(a, l, i - 1, k);
}

int main()
{
int a[] = {1, 4, 2, 8, 5, 7, 23, 58, 16, 27, 55, 13, 26, 24, 12};
printf("%d\n", quick_select(a, 0, 14, 5));
return 0;

}

答案:a, i+1, r, k-(i-l+1)

2018省赛第九届蓝桥杯真题C语言B组第五题题解 快速排序相关推荐

  1. 2018省赛第九届蓝桥杯真题C语言B组第十题题解 乘积最大

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:乘积最大 给定N个整数A1, A2, ... AN.请你从中选出K个数,使其乘积最大.   请你求出最大的乘积,由于乘积可能超出整型范围,你只 ...

  2. 2018省赛第九届蓝桥杯真题C语言B第四题题解 测试次数

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机 ...

  3. 2018省赛第九届蓝桥杯真题C语言B组第九题题解 全球变暖

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:全球变暖 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... ...

  4. 2018省赛第九届蓝桥杯真题C语言B组第八题题解 日志统计

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是: ts id 表示在t ...

  5. 2018省赛第九届蓝桥杯真题C语言B组第六题题解 递增三元组

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:递增三元组 给定三个整数数组 A = [A1, A2, ... AN],  B = [B1, B2, ... BN],  C = [C1, C ...

  6. 蓝桥杯——第九届C语言B组第五题:x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机;

    x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机; (1)对于这道题摔手机测试题呢!也就是求它的最优解;我一开始想到这道题的解法呢!是二分解,但你往里面具体的深入的看题,它是一个巨 ...

  7. 第九届蓝桥杯真题解析JavaC组

    第九届蓝桥杯真题解析JavaC组 文章目录 ***第九届蓝桥杯真题解析JavaC组*** 前言 A.哪天回家 B.猴子分香蕉 C.字母阵列 D.第几个幸运数 E.书号验证 F.打印大X G.缩位求和 ...

  8. 2018年第九届蓝桥杯真题解析 | 日志统计【Python】

    问题描述 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有 N 行.其中每一行的格式是: ts id 表示在 ts 时刻编号 id 的帖子收到一个"赞&q ...

  9. 2018年第九届蓝桥杯真题解析 | 星期一【Python】

    问题描述 整个 2020 世纪(1901 年 1 月 1 日至 2000年 12 月 31 日之间),一共有多少个星期一? 个人思路 使用datetime模块 常见的datetime函数 1.S = ...

最新文章

  1. FD.io/VPP — QoS — DPDK Hqos
  2. 利用Python爬取糗事百科段子信息
  3. HDU - 6756 Finding a MEX-分块思想
  4. lseek、stat、access、chmod、strtol、truncate、unlink
  5. Android Input子系统-含实例源码
  6. SpringBoot的启动过程
  7. 8086考试主要考的最小模式
  8. (译)如何制作一个类似tiny wings的游戏:第一部分
  9. jquery获取元素颜色css('color')的值返回RGB
  10. ACE Admin 模板实现sidebar菜单联动tabs页签
  11. Vscode ssh远程连接失败解决办法
  12. Linux搜索文件或内容
  13. Windows驱动一些概念WDK WDF WDM WDI
  14. ActiveMQ 默认用户名和密码
  15. 现代前端技术解析读书笔记
  16. 花千骨歌曲大全 附简谱
  17. 随机变量的期望和方差
  18. pe如何自动加载外置工具_WINPE如何做到启动后自动运行外置程序里面指定的程序...
  19. 计算机硕士可以入伍么,2021年下半年“征兵”已开始,大学生在校入伍好,还是毕业入伍好...
  20. 研究ffmepg中有感(NDK 与 JNI 的关系)

热门文章

  1. 基于协同过滤算法的电影推荐系统设计(二) - ALS算法详解
  2. 产品:“嘘,这事千万别让开发知道”
  3. Titanic 泰坦尼克号预测-Tensorflow 方法-【Kaggle 比赛】
  4. 京东移动端首页-流式布局
  5. 开发高并发系统的三把利器
  6. 《高楼的性能工程实战课》学习所推荐的知识点
  7. Nvidia Tesla P100 性能评测
  8. Linux 下的用户、用户组、文件权限设置
  9. Swift 3.0 语法
  10. map的put 方法的返回值 null