由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 比较两个QuickSort函数
相关主题
吐槽QuickSort的partitionOne bug in my 3-way string quicksort implementation
非典型QuickSort的Partition函数,怎么证明是对的?Re: 贡献个facebook电话interview
quicksort到底以哪个为准啊找median有O(N)的算法吗?
请教leetcode里quicksort的code一道非常伪善的面试题
permuation sequence 超时binary search里面你们是用 < 还是<=
到底怎么了?很多面试来的居然连reverse一个链表都写不来L 家国女坑同胞
bloomberg刚店面晚。 悔阿问一道题
其实我很想知道, 多少软工能45分钟内把quicksort写下来[Algo]dutch flag problem
相关话题的讨论汇总
话题: arr话题: int话题: left话题: right话题: pivot
进入JobHunting版参与讨论
1 (共1页)
K*****k
发帖数: 430
1
都是取第一个元素为支点, 哪个写得更好?
void quickSort1(int arr[], int left, int right)
{
if (left >= right)
return;
int pivot = arr[left];
int i = left;
int j = right + 1;
while (i < j)
{
do { i++; } while (i <= right && arr[i] < pivot);
do { j--; } while (arr[j] > pivot);
if (i < j)
swap(arr, i, j);
}
swap(arr, left, j);
quickSort1(arr, left, j - 1);
quickSort1(arr, j + 1, right);
}
=======================================================================
void quickSort2(int arr[], int left, int right)
{
if (left >= right)
return;
int pivot = arr[left];
int i = left - 1;
int j = right + 1;
while (i < j)
{
do { j--; } while (arr[j] > pivot);
do { i++; } while (arr[i] < pivot);
if (i < j)
swap(arr, i, j);
}
quickSort2(arr, left, j);
quickSort2(arr, j + 1, right);
}
f*******t
发帖数: 7549
2
怎么那么多循环?我的版本只有一层啊:
void quicksort(int arr[], int left, int right)
{
if(left >= right)
return;

int pivot = arr[right];
int i = left;
for(int j = left; j < right; j++)
{
if(arr[j] < pivot)
{
if(i != j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
++i;
}
}
if(i != right) {
int temp = arr[right];
arr[right] = arr[i];
arr[i] = temp;
}

quicksort(arr, left, i-1);
quicksort(arr, i+1, right);
}
K*****k
发帖数: 430
3
T. Hoare vs N. Lomuto

【在 f*******t 的大作中提到】
: 怎么那么多循环?我的版本只有一层啊:
: void quicksort(int arr[], int left, int right)
: {
: if(left >= right)
: return;
:
: int pivot = arr[right];
: int i = left;
: for(int j = left; j < right; j++)
: {

1 (共1页)
进入JobHunting版参与讨论
相关主题
[Algo]dutch flag problempermuation sequence 超时
顶风上来问道题:一个很大char[], 如何in-place 删除重复元素到底怎么了?很多面试来的居然连reverse一个链表都写不来
问道排序题bloomberg刚店面晚。 悔阿
讨论一道老题:分离数组中的正负数 (转载)其实我很想知道, 多少软工能45分钟内把quicksort写下来
吐槽QuickSort的partitionOne bug in my 3-way string quicksort implementation
非典型QuickSort的Partition函数,怎么证明是对的?Re: 贡献个facebook电话interview
quicksort到底以哪个为准啊找median有O(N)的算法吗?
请教leetcode里quicksort的code一道非常伪善的面试题
相关话题的讨论汇总
话题: arr话题: int话题: left话题: right话题: pivot