由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 3-way Partition 算法不容易
相关主题
Programming Pearl上的3way partition好像不workMS一道onsite面题 白板coding
One bug in my 3-way string quicksort implementation非典型QuickSort的Partition函数,怎么证明是对的?
Quick Sort的partition问题找median有O(N)的算法吗?
再发几个面试题leetcode 关于Partition List
Amazon 电面CC150 18.6 quick select
JAVA里sort的algorithm time complexity是多少请教大牛: Leetcode partition list: Time Limit Exceeded
coding是不是用接口比较吊啊?Leetcode Kth largest
一道Coding面试题目请教leetcode里quicksort的code
相关话题的讨论汇总
话题: int话题: partition话题: lo话题: cmp话题: comparable
进入JobHunting版参与讨论
1 (共1页)
y***n
发帖数: 1594
1
上次看了一个人贴了Google 问了3-way Partition, 自己试了一下,写的很难看, 后
来看了一下
Princeton 的书,就这么几行,面试时候写出来还真不不容易。。
也许是我转行的水平太差。。还得修炼。。
http://algs4.cs.princeton.edu/23quicksort/Quick3way.java.html
private static void partition(Comparable[] a, int lo, int hi) {
if (hi <= lo) return;
int lt = lo, gt = hi;
Comparable v = a[lo];
int i = lo;
while (i <= gt) {
int cmp = a[i].compareTo(v);
if (cmp < 0) exch(a, lt++, i++);
else if (cmp > 0) exch(a, i, gt--);
else i++;
}
}
b***y
发帖数: 177
2
其实就是leetcode的sortcolor

【在 y***n 的大作中提到】
: 上次看了一个人贴了Google 问了3-way Partition, 自己试了一下,写的很难看, 后
: 来看了一下
: Princeton 的书,就这么几行,面试时候写出来还真不不容易。。
: 也许是我转行的水平太差。。还得修炼。。
: http://algs4.cs.princeton.edu/23quicksort/Quick3way.java.html
: private static void partition(Comparable[] a, int lo, int hi) {
: if (hi <= lo) return;
: int lt = lo, gt = hi;
: Comparable v = a[lo];
: int i = lo;

l*********8
发帖数: 4642
3
c/c++ 可以写成这样。
void partition(int * low, int * high, int pivot) {
for (int *p = low; p < high; ) {
if (*p == pivot)
++p;
else if (*p < pivot)
swap(*low++, *p++);
else
swap(*p, *--high);
}
}

【在 y***n 的大作中提到】
: 上次看了一个人贴了Google 问了3-way Partition, 自己试了一下,写的很难看, 后
: 来看了一下
: Princeton 的书,就这么几行,面试时候写出来还真不不容易。。
: 也许是我转行的水平太差。。还得修炼。。
: http://algs4.cs.princeton.edu/23quicksort/Quick3way.java.html
: private static void partition(Comparable[] a, int lo, int hi) {
: if (hi <= lo) return;
: int lt = lo, gt = hi;
: Comparable v = a[lo];
: int i = lo;

y**********u
发帖数: 6366
4
这个swap有问题阿



【在 l*********8 的大作中提到】
: c/c++ 可以写成这样。
: void partition(int * low, int * high, int pivot) {
: for (int *p = low; p < high; ) {
: if (*p == pivot)
: ++p;
: else if (*p < pivot)
: swap(*low++, *p++);
: else
: swap(*p, *--high);
: }

b******t
发帖数: 965
5
leetcode上面好多题都很难啊 能想出来要花很久

【在 y***n 的大作中提到】
: 上次看了一个人贴了Google 问了3-way Partition, 自己试了一下,写的很难看, 后
: 来看了一下
: Princeton 的书,就这么几行,面试时候写出来还真不不容易。。
: 也许是我转行的水平太差。。还得修炼。。
: http://algs4.cs.princeton.edu/23quicksort/Quick3way.java.html
: private static void partition(Comparable[] a, int lo, int hi) {
: if (hi <= lo) return;
: int lt = lo, gt = hi;
: Comparable v = a[lo];
: int i = lo;

y**********u
发帖数: 6366
6
大牛你的算法这么厉害。。。



【在 b******t 的大作中提到】
: leetcode上面好多题都很难啊 能想出来要花很久
l*********8
发帖数: 4642
7
high 是指向数组最后一个元素的后面一个。
比如:
int a[5] = {3,2, 7, 2, 1};
int pivot = 2;
partition(a, a+5, pivot);

【在 y**********u 的大作中提到】
: 这个swap有问题阿
:
: 后

y**********u
发帖数: 6366
8
算法没有问题阿
主要是swap,pass by value可能不那么好

【在 l*********8 的大作中提到】
: high 是指向数组最后一个元素的后面一个。
: 比如:
: int a[5] = {3,2, 7, 2, 1};
: int pivot = 2;
: partition(a, a+5, pivot);

l*********8
发帖数: 4642
9
std::swap是pass by reference的啊

【在 y**********u 的大作中提到】
: 算法没有问题阿
: 主要是swap,pass by value可能不那么好

1 (共1页)
进入JobHunting版参与讨论
相关主题
请教leetcode里quicksort的codeAmazon 电面
discuss an array rearrange questionJAVA里sort的algorithm time complexity是多少
有简洁树代码么coding是不是用接口比较吊啊?
求教 uva254 汉诺塔一道Coding面试题目
Programming Pearl上的3way partition好像不workMS一道onsite面题 白板coding
One bug in my 3-way string quicksort implementation非典型QuickSort的Partition函数,怎么证明是对的?
Quick Sort的partition问题找median有O(N)的算法吗?
再发几个面试题leetcode 关于Partition List
相关话题的讨论汇总
话题: int话题: partition话题: lo话题: cmp话题: comparable