编程之美2.5寻找最大的K个数 解法二 Java版
来源:互联网 发布:七日杀低配置优化 编辑:程序博客网 时间:2024/05/21 14:56
先实现了一下快速排序,代码就不贴了,网上可以找到不错的
思路跟书上的解法二伪代码一样
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */package Test;import java.util.ArrayList;import java.util.List;import java.util.Random;/** * * @author Administrator */public class SearchKNumbers { public static void main(String[] args) { int[] arry = {45, 67, 305, 12, 78, 102, 29, 88, 91, 55, 100, 38, 99, 59, 203, 12}; int k = 4; List<Integer> list = new ArrayList<Integer>(); for (int i = 0; i < arry.length; i++) { list.add(arry[i]); } List l = Kbig(list, k); for (int i = 0; i < l.size(); i++) { System.out.print(l.get(i) + " "); } } private static List Kbig(List<Integer> list, int k) { if (k <= 0) { return null; } if (list.size() <= k) { return list; } List l = Partition(list); List<Integer> la = Kbig((List<Integer>) l.get(0), k); List<Integer> lb = Kbig((List<Integer>) l.get(1), k - la.size()); if (lb != null) la.addAll(lb); return la; } private static List<List<Integer>> Partition(List<Integer> list) { List<Integer> sa = new ArrayList(); List<Integer> sb = new ArrayList(); Random random = new Random(); int result = random.nextInt(list.size()); int p = list.get(result); for (int i = 0; i < list.size(); i++) { if (list.get(i) > p) { sa.add(list.get(i)); } if (list.get(i) < p) { sb.add(list.get(i)); } } if (sa.size() < sb.size()) { sa.add(p); } else { sb.add(p); } List<List<Integer>> l = new ArrayList(); l.add(sa); l.add(sb); return l; } }
0 0
- 编程之美2.5寻找最大的K个数 解法二 Java版
- 编程之美之2.5 寻找最大的K个数
- 编程之美2.5 寻找最大的K个数
- 编程之美 2.5 寻找最大的K个数(1)
- 编程之美2.5寻找最大的K个数
- 编程之美2.5 寻找最大的K个数
- 编程之美 2.5 寻找最大的K个数
- 编程之美-2.5寻找最大的K个数
- 编程之美-2.5寻找最大的K个数
- [编程之美] 2.5 寻找最大的K个数
- 算法->编程之美2.5 寻找最大的K个数
- 【编程之美】2.5寻找最大的k个数
- 编程之美------2.5 寻找最大的K个数
- 编程之美2.5 寻找最大的K个数
- 编程之美 2.5 寻找最大的K个数
- 编程之美2.5 寻找最大的K个数
- 《编程之美》中寻找最大的K个数的一般解法,这是和快速排序相结合的解法
- 编程之美系列之寻找最大的K个数
- POJ 2499 第k小最短路
- 常用排序算法Java代码
- android studio导入源码(来自github上下载的压缩包)
- AngularJs directive指令实例
- hadoop pipes应用别的语言
- 编程之美2.5寻找最大的K个数 解法二 Java版
- 电商之(LB)梳理F5(4层)---反向代理以及负载均衡
- Intersection of Two Linked Lists
- iOS UI 技巧: 视图无法被点击
- 电商之梳理Nginx(7层)相关知识---反向代理以及负载均衡
- Android异步消息处理机制完全解析,带你从源码的角度彻底理解
- Struts:No result defined for action daiwei.struts.action.UserAction and result success
- 电商之梳理varnish相关知识---http协议加速器
- ThinkPHP中的$this->success()与$this->error()方法的使用