快速排序

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

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

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

package bb;
import java.util.Random;
public class JB18_5快速排序 {public static int quickSelect(int a[], int l, int r, int k) {Random rand = new Random();int p = rand.nextInt(r - l + 1) + l;int x = a[p];int tmp = a[p];a[p] = a[r];a[r] = tmp;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)// (1)说明到底了return a[i];if (i - l + 1 < k)return quickSelect(a, i + 1, r, k - i + l - 1); // 填空// qsort(a, i + 1, right);// (3)先试试k,// (4)再考虑:k要移动到等于(i - l + 1),试试k-(i - l + 1)else// i - l + 1 > kreturn quickSelect(a, l, i - 1, k);// (2)qsort(a, left, i -// 1);对上了,k不变}public static void main(String args[]) {int[] a = { 1, 4, 2, 8, 5, 7 };System.out.println(quickSelect(a, 0, 5, 4));// int [] a = {1, 4, 2, 8, 5, 7, 23, 58, 16, 27, 55, 13, 26, 24, 12, 2};// System.out.println(quickSelect(a, 0, a.length-1, 6));}
}

Java实现第九届蓝桥杯快速排序相关推荐

  1. Java实现第九届蓝桥杯小朋友崇拜圈

    小朋友崇拜圈 题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己). 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边. 求满足条件的圈最大多少人 ...

  2. Java实现第九届蓝桥杯螺旋折线

    螺旋折线 题目描述 如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0 ...

  3. Java实现第九届蓝桥杯付账问题

    付账问题 题目描述 [题目描述] 几个人一起出去吃饭是常有的事.但在结帐的时候,常常会出现一些争执. 现在有 n 个人出去吃饭,他们总共消费了 S 元.其中第 i 个人带了 ai 元.幸运的是,所有人 ...

  4. Java实现第九届蓝桥杯第几天

    第几天 题目描述 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. import java.util.Cal ...

  5. Java实现第九届蓝桥杯三体攻击

    三体攻击 [题目描述] 三体人将对地球发起攻击.为了抵御攻击,地球人派出了 A × B × C 艘战舰,在太空中排成一个 A 层 B 行 C 列的立方体.其中,第 i 层第 j 行第 k 列的战舰(记 ...

  6. Java实现第九届蓝桥杯字母阵列

    字母阵列 题目描述 仔细寻找,会发现:在下面的8x8的方阵中,隐藏着字母序列:"LANQIAO". SLANQIAO ZOEXCCGB MOAYWKHI BCCIPLJQ SLAN ...

  7. java实现第九届蓝桥杯三角形面积

    三角形面积 小明最近在玩一款游戏.对游戏中的防御力很感兴趣. 我们认为直接影响防御的参数为"防御性能",记作d,而面板上有两个防御值A和B,与d成对数关系,A=2^d,B=3^d( ...

  8. Java实现第九届蓝桥杯哪天返回

    哪天返回 题目描述 小明被不明势力劫持.后被扔到x星站再无问津.小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文. 他决定在x星战打工.好心的老板答应包食宿,第1天给他1元钱. 并且 ...

  9. Java实现第九届蓝桥杯乘积为零

    乘积为零 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 61 ...

最新文章

  1. 网页缩放zoom用法
  2. select选择框变得可以输入、编辑
  3. mysql 导出数据为csv格式
  4. 【ARM】ARM汇编程序设计(六) stm和ldm
  5. JavaFX UI控件教程(十九)之Hyperlink
  6. servlet中url-pattern之/与/*的区别
  7. linux 用脚本建分区,脚本创建磁盘分区
  8. 他高考数学仅得15分,清华校长复查后激动拍板:这名学生,我要了
  9. FPGA基础入门篇(四) 边沿检测电路
  10. udp客户端 Java_java UDP通信客户端与服务器端实例分析
  11. 毕业论文学术报告答辩开题报告PPT模板
  12. 单片机第1季:零基础学51单片机-蜂鸣器介绍
  13. linux安装sas raid驱动,windows 2008 安装raid驱动|windows 2008安装sas硬盘驱动
  14. e430c参数 thinkpad_联想ThinkPad E430c(33651E1)
  15. iOS 9.3.5 越狱
  16. 机动车尾气排放智能抓拍解决应用方案
  17. 大型软件开发中的流程与规范
  18. 管理分区表:拆分、添加与交换分区
  19. 电商销量预测方法综述
  20. 倍福---CNC系统介绍

热门文章

  1. Mysql官方网站到底该如何下载、安装?(超详细教程)
  2. UG CAM API 二次开发批量创建程序组的功能写法,提供一个初始的程序组名进行批量创建
  3. Linux常用工具介绍
  4. python解决哲学家就餐问题(and型信号量)
  5. 关于虚拟专用网的一些概念
  6. matlab 色块图,matlab绘制矩阵色块图
  7. Glidedsky系列—爬虫CSS反爬
  8. ironpython调用c dll_IronPython.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家...
  9. C语言的指针\数组用图解一次搞懂
  10. VUE超超超!入门介绍