博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Kth largest element in an array
阅读量:4955 次
发布时间:2019-06-12

本文共 1505 字,大约阅读时间需要 5 分钟。

这个题目使用快排。

这里涉及如何实现快排的问题。在[1]当中有一个快排的实现例子。在这里我们关注与快排的实现而不是这个问题本身,因为快排的问题解决了,这个问题就解决了

快排的思想是选择一个元素,从两边进行遍历将遇到的第一对不满足序列关系的元素进行交换。

关键是这里如何实现这种兑换

1、可以在同时找到这两个元素的时候进行交换

2、交替进行替换的策略。

比如先将左边位置left空出,从右边进行遍历找第一个小于pivot的元素以及所以right,将right位置的元素放到left处,同时将right位置空出

在从左边找第一个大于pivot的元素,当然现在left位置处的元素是小于pivot的,所以会继续left加一,直至找到一个大于等于pivot的元素或者right=left。

========================================================================================

left=0,right=num.length-1;

pivot = num[left];

while(left<right){

  while(left<right&&num[right]>=pivot) right--;

    num[left]= num[right];

  while(left<right&&num[left]<pivot)     left++;

    num[right]=num[left];

}

num[left]=pivot;

========================================================================================

我们简单分析一下代码的执行边界:

1、进入外层while循环,则开始找第一个小于pivot的元素

(1)如果在left的右侧找到,则填充到left位置处;

(2)如果没有找到,也就是说当前的元素都是大于等于pivot的;则第二个内层while循环当中由于left等于right,所以进行了自我复制,最后跳出while循环,并且在left或者right处写入pivot

(3)如果第二个while循环没有找到,也就是此时left右侧到right之间的所有元素都是小鱼pivot的,那么这是实际上已经找到了pivot插入的位置,就在刚才等待插入的right 处,算法结束。

 

 对于quick sort本身是可以使用迭代和递归两种方式实现的,这里同样的道理。

1 public class Solution { 2     private int quick2(int []nums,int start,int end,int k){ 3         int L =start; 4         int R = end; 5         while(L
=target) right--;12 nums[left]=nums[right];13 while(left
=target) right--;33 nums[left]=nums[right];34 while(left

 

[1]

转载于:https://www.cnblogs.com/deepblueme/p/4722129.html

你可能感兴趣的文章
08号团队-团队任务5:项目总结会
查看>>
mybatis 插入数据 在没有commit时 获取主键id
查看>>
SQL2005 删除空白行null
查看>>
lightoj 1030 概率dp
查看>>
重新注册.NET
查看>>
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
查看>>
Vagrant入门
查看>>
python and 我爱自然语言处理
查看>>
第3讲:导入表的定位和读取操作
查看>>
echarts-柱状图绘制
查看>>
mysql备份与恢复
查看>>
混沌分形之迭代函数系统(IFS)
查看>>
VS2013试用期结束后如何激活
查看>>
边框圆角Css
查看>>
SQL 能做什么?
查看>>
java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
查看>>
使用Busybox制作根文件系统
查看>>
Ubuntu候选栏乱码
查看>>
基于SSH框架的在线考勤系统开发的质量属性
查看>>
jpg图片在IE6、IE7和IE8下不显示解决办法
查看>>