当前位置: 首页 > news >正文

威海北京网站建设俄罗斯搜索引擎浏览器

威海北京网站建设,俄罗斯搜索引擎浏览器,自己做微信团购小程序,苏州网站建设 公司在未排序的数组中找到第 k 个最大的元素。请注意#xff0c;你需要找的是数组排序后的第 k 个最大的元素#xff0c;而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4 说明: 你可以假设 k 总是…在未排序的数组中找到第 k 个最大的元素。请注意你需要找的是数组排序后的第 k 个最大的元素而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4 说明: 你可以假设 k 总是有效的且 1 ≤ k ≤ 数组的长度。 思路堆、改进快排、BFPRT 解释链接 public class Solution {/* //前k小public static int[] getMinKNumsByBFPRT(int[] arr, int k) {if (k 1 || k arr.length) {return arr;}int minKth findKthLargest(arr, k);int[] res new int[k];int index 0;for (int i 0; i ! arr.length; i) {if (arr[i] minKth) {res[index] arr[i];}}for (; index ! res.length; index) {res[index] minKth;}return res;}*/ //第k小public static int findKthLargest(int[] arr, int K) {int[] copyArr copyArray(arr);return select(copyArr, 0, copyArr.length - 1, arr.length-K);}public static int[] copyArray(int[] arr) {int[] res new int[arr.length];for (int i 0; i ! res.length; i) {res[i] arr[i];}return res;} //给定一个数组和范围求第i小的数public static int select(int[] arr, int begin, int end, int i) {if (begin end) {return arr[begin];}int pivot medianOfMedians(arr, begin, end);//划分值int[] pivotRange partition(arr, begin, end, pivot);if (i pivotRange[0] i pivotRange[1]) {return arr[i];} else if (i pivotRange[0]) {return select(arr, begin, pivotRange[0] - 1, i);} else {return select(arr, pivotRange[1] 1, end, i);}} //在begin end范围内进行操作public static int medianOfMedians(int[] arr, int begin, int end) {int num end - begin 1;int offset num % 5 0 ? 0 : 1;//最后一组的情况int[] mArr new int[num / 5 offset];//中位数组成的数组for (int i 0; i mArr.length; i) {int beginI begin i * 5;int endI beginI 4;mArr[i] getMedian(arr, beginI, Math.min(end, endI));}return select(mArr, 0, mArr.length - 1, mArr.length / 2);//只不过i等于长度一半用来求中位数} //经典partition过程public static int[] partition(int[] arr, int begin, int end, int pivotValue) {int small begin - 1;int cur begin;int big end 1;while (cur ! big) {if (arr[cur] pivotValue) {swap(arr, small, cur);} else if (arr[cur] pivotValue) {swap(arr, cur, --big);} else {cur;}}int[] range new int[2];range[0] small 1;range[1] big - 1;return range;} //五个数排序返回中位数public static int getMedian(int[] arr, int begin, int end) {insertionSort(arr, begin, end);int sum end begin;int mid (sum / 2) (sum % 2);return arr[mid];} //手写排序public static void insertionSort(int[] arr, int begin, int end) {for (int i begin 1; i ! end 1; i) {for (int j i; j ! begin; j--) {if (arr[j - 1] arr[j]) {swap(arr, j - 1, j);} else {break;}}}} //交换值public static void swap(int[] arr, int index1, int index2) {int tmp arr[index1];arr[index1] arr[index2];arr[index2] tmp;}/* //打印public static void printArray(int[] arr) {for (int i 0; i ! arr.length; i) {System.out.print(arr[i] );}System.out.println();}*/ }
http://www.zqtcl.cn/news/887795/

相关文章:

  • 网站修改后怎么上传济南网络员
  • 家居seo整站优化方案怎样开平台软件
  • 深圳网站关键词网站做视频转流量
  • 做网站如何配置自己的电脑精准防恶意点击软件
  • 单页网站 挣钱深圳高水平网站制作
  • 网站建设哪几家好一些打开浏览器历史记录
  • 公司里面有人员增减要去哪个网站做登记网页开发报价单
  • 网站设计的公司运营接单百度搜索引擎首页
  • 最专业的做网站公司有哪些成都龙泉建设有限公司网站
  • 云南省玉溪市建设局官方网站wordpress 迁移 空白
  • 网站空间和数据库多个织梦dedecms网站怎么做站群
  • 网站模块插件是怎么做的个人建设网站流程图
  • 作品展示的网站建设网站方案
  • 整站优化哪家专业网站漏洞解决办法
  • 怎么给自己的网站做扫描码南宁seo排名外包
  • 网站的服务器在哪里怎么建设网站啊
  • 山东做网站三五网站备案怎样提交到管局
  • 自己如何做网站教程中山企业网站推广公司
  • 网站每年费用本地同城服务平台
  • 暗网网站有那些青岛网站设计公司推荐
  • 营业执照咋做网等网站遂宁网站建设公司哪家好
  • 湖南平台网站建设找哪家重庆网站建设营销
  • wordpress搭建企业网站小型网络架构
  • 淘宝联盟链接的网站怎么做培训网站排名
  • 上海高端网站建设定制大连开发区邮编
  • 手机网站公司免费crm软件下载
  • 家居企业网站建设平台周口seo
  • 扁平化网站建设公司广告推广方案
  • 高端企业网站 程序北京做网站费用
  • net做网站遇到的问题搜索引擎优化方法