1. 快排利用标兵的思想,但每一次都是比较范围大小,没有精确排序。
  2. 同样适用于快速求解 需要定性的范围问题,例如:第k大(将前后定性大小,但不用排序).
  3. 求解第k大:通过判断下标,只计算有k的那一半。
  4. 快排是从广到窄的递归。
  5. 快排:a.枢轴要回归.b.i总是指向偏大的值.

    void quick_sort(int *A, int x, int y)//左闭右闭
    {
    if(x < y)//当有1或0个元素是退出
    {int i = x;int j = y;
    //取中值,优化快排速度,优化效果明显,4%~5%。int m = x + (y-x)/2;if(A[x] > A[m])if(A[x] > A[y])if(A[m] > A[y])swap(A[m],A[y]);elseswap(A[x],A[y]);else//A[x]<A[m]if(A[x] > A[y])swap(A[x],A[y]);elseif(A[y] > A[m])swap(A[m],A[y]);
    //优化结束int key = A[y];while(true){while(i < j && A[i] <= key)//因为先从左开始遍历,所以A[i]一定是偏大的值++i;while(i < j && A[j] >= key)--j;if(i < j)swap(A[i],A[j]);elsebreak;++i;//不能同时--j,否则会有bug。}swap(A[i],A[y]);//将枢纽归位quick_sort( A,x, i-1);quick_sort( A,i+1, y);
    }
    }

快速排序 求第k大数相关推荐

  1. 整数无序数组求第k大数

    题目来自牛客网 https://www.nowcoder.com/practice/097ab63cffa847d89716f2ca8c23524f?tpId=90&tqId=30914&am ...

  2. 无序数组求第k大的数 python_整数无序数组求第K大数

    import java.util.Scanner; /** * 类似与求第k小的问题 * 求第k大相当于求第n-k+1小,n为数组长度 * * 著名的BFPRT算法可保证在线性时间内得到结果. * h ...

  3. c++求区间第k大数_数组中求第K大数的实现方法

    问题:有一个大小为n的数组A[0,1,2,-,n-1],求其中第k大的数. 该问题是一个经典的问题,在<算法导论>中被作为单独的一节提出,而且其解决方法很好的利用了分治的思想,将时间复杂度 ...

  4. 整数无序数组求第K大数(暴力|快排) - 滴滴出行2018校园招聘内推笔试-研发工程师

    时间限制:1S 空间限制:32768K 题目描述: 给定无序整数序列,求第K大的数,例如{45,67,33,21},第2大的数为45 输入描述: 输入第一行为整数序列,数字用空格分割,如:45 67 ...

  5. C++实现数组中求第K大数

    参考:http://blog.csdn.net/hackbuteer1/article/details/6651804 #include<iostream> using namespace ...

  6. 算法 {多路归并,二路归并,第K大数}

    catalog 二路归并 归并操作--并集 暴力 二叉树 归并操作--元素复合 暴力 二叉树 堆维护 行分组 多路归并 归并操作--并集 归并操作--元素复合 例题 二路归并 多路归并 是 二路归并 ...

  7. 线性时间复杂度求数组中第K大数

    求数组中第K大的数可以基于快排序思想,步骤如下: 1.随机选择一个支点 2.将比支点大的数,放到数组左边:将比支点小的数放到数组右边:将支点放到中间(属于左部分) 3.设左部分的长度为L, 当K &l ...

  8. c++求区间第k大数_寻找第K大的数的方法总结

    今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值. 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以 ...

  9. poj 2985(并查集+线段树求K大数)

    解题思路:这道题并查集很容易,合并时找到父节点就直接加上去就ok了.关键是如何求K大数,我一直在想用线段树怎么写,一开始想如果直接记录数的大小那肯定是没戏了,借鉴了一下别人的思路:区间[a,b]记录的 ...

  10. 快速排序——寻找数组第K大数(由浅入深,四种方法对比讲解!)

    寻找数组第K大数是大厂面试中经常考到的一题,有的小机灵鬼直接用sort()进行排序,两行代码解决,这样看似可行,实则掉入了出题人的陷阱.面试官希望看到的是你对算法的理解,而不是函数的调用.下面,我就以 ...

最新文章

  1. 哪种编程语言最适合初学者?
  2. 图像识别 43个模型
  3. 《Credit Risk Scorecard》第四章:Data Review and Project Parameters
  4. CUDA学习日志:常量内存和纹理内存
  5. 卸载mongodb_【数据库】mongodb数据库安装
  6. freemind在ubuntu20.04下面的安装
  7. 前端学习(1920)vue之电商管理系统电商系统之角色列表路由的切换
  8. leetcode - 746. 使用最小花费爬楼梯
  9. 明年3月开卖!小米11超大杯有望搭载屏下摄像头技术
  10. 数据结构与算法之-----栈的应用(三)
  11. Charles抓包工具_基本功能
  12. 前端后台的爱恨情仇——接口调试
  13. 微pe装linux系统教程,微PE工具箱增加安装Linux系统菜单
  14. 【雕虫小技第8篇】scratch编程技巧之源码中的图片素材资源导出!
  15. 华为面试题之洞穴逃生
  16. uni-app微信小程序模拟器运行到某一页面调试操作
  17. vue中引入百度地图
  18. Nginx+Tomcat 负载均衡+动静分离
  19. 三十、再问唐僧出生之迷
  20. springboot POST 405 错误

热门文章

  1. Minecraft源码分析(5) - 饱食度
  2. cocos2d-x 渲染流程简要说明
  3. cocos2d-x的渲染流程及原理
  4. MIT 18.06 线性代数总结(Part I)
  5. dina虚拟服务器,Dina渗透
  6. 安全多方ABY框架搭建与常见问题汇总
  7. 华为云云服务器,中小企业业务上云第一步
  8. 【微服务架构】微服务与SOA架构(1)
  9. SQL查询之查询成绩表中每一科最大成绩的学生的所有信息(之前遇到一个面试题当时想不起来,回来后自己用数据库试了出来)
  10. VMware下Oracle10gRAC在OEL5.6上安装--简略版