算法
b7771253
这个作者很懒,什么都没留下…
展开
-
根据入栈顺序输出所有可能的出栈顺序 (Java)
某次面试被问到的一个题,当场答得不是很好,所以回来记录一下比如入栈顺序是1,2,3,那么出栈顺序分别可以是1,2,3;1,3,2;….import java.util.Stack;public class ss { static char[] in={'a','b','c'}; public static void main(String[] args){ fun(0原创 2016-09-11 18:13:34 · 6784 阅读 · 2 评论 -
Java 实现 堆排序 快速排序 以及 TopK问题(一)
问题是 从大小为N的无序数组里面取K个最大值最早想到的办法是冒泡K轮,但是后来思考到,堆排序和快速排序,可以更好的实现取K个最大值。public class Main { public static void main(String[] args) { int[] arr={5,62,81,63,13,43,34,5,8,9,6,44}; int k原创 2016-09-13 11:26:51 · 768 阅读 · 0 评论 -
Java 实现 堆排序 快速排序 以及 TopK问题(二)
接上文已知快速排序可以将一个数组分成两部分,一部分大于某个值,一部分小于某个值,那么由这点可以推出取TopK值的方法如下:假设快排每一趟的分割值的点为p,数组长度为n,那么需要比较n-p与k,如果恰好K==n-p,那么只需要取p点之后的所有值就行了。如果k如果k>n-p,先输出右边的n-p个值,再递归左边寻找Top(k-n+p)值代码如下publ原创 2016-09-13 13:42:00 · 1822 阅读 · 0 评论