由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 感觉careercup上的mergesort很不简洁
相关主题
ebay 电面问一个关于merge sort的小细节
question about big data关于index的问题
哪位大写给说说 何时用 merge sort, 何时用 quick sort, 何时 heap sort问一道题, 不是很难, 但不知道最优解是什么
LA码农工资咋样?带点面经一个小公司面经
linkedin今天的电面题BB NON CS onsite面经
问一道关于k-way merge的题leetcode Sort List
问个CareerCup上external sort的题电话中写 code,不是给做弊的机会吗
sort list java solution变相的merge sort
相关话题的讨论汇总
话题: int话题: arr话题: start话题: tmp话题: mid
进入JobHunting版参与讨论
1 (共1页)
p*****2
发帖数: 21240
1
我写了一个,有什么问题吗?
static void Merge(int[] arr, int start, int mid, int end)
{
int[] tmp = new int[arr.Length];
Array.Copy(arr, start, tmp, start, end - start + 1);
int left = start;
int right = mid + 1;
int current = start;
while (left <= mid)
{
if (right>end || tmp[left] <= tmp[right])
arr[current++] = tmp[left++];
else
arr[current++] = tmp[right++];
}
}
l*****a
发帖数: 14598
2
第一个问题是为什么要传mid
函数里自己算不好吗?

【在 p*****2 的大作中提到】
: 我写了一个,有什么问题吗?
: static void Merge(int[] arr, int start, int mid, int end)
: {
: int[] tmp = new int[arr.Length];
: Array.Copy(arr, start, tmp, start, end - start + 1);
: int left = start;
: int right = mid + 1;
: int current = start;
: while (left <= mid)
: {

q****x
发帖数: 7404
3
没看懂。

【在 p*****2 的大作中提到】
: 我写了一个,有什么问题吗?
: static void Merge(int[] arr, int start, int mid, int end)
: {
: int[] tmp = new int[arr.Length];
: Array.Copy(arr, start, tmp, start, end - start + 1);
: int left = start;
: int right = mid + 1;
: int current = start;
: while (left <= mid)
: {

p*****2
发帖数: 21240
4
这是全部的代码
static void MergeSort(int[] arr)
{
if (arr == null || arr.Length == 1)
return;
Sort(arr, 0, arr.Length - 1);
}
static void Sort(int[] arr, int start, int end)
{
if (start >= end)
return;
int mid = (start + end) / 2;
Sort(arr, start, mid);
Sort(arr, mid + 1, end);
Merge(arr, start,end);
}
static void Merge(int[] arr, int start,int end)
{
int[] tmp = new int[arr.Length];
Array.Copy(arr, start, tmp, start, end - start + 1);
int mid = (start + end) / 2;
int left = start;
int right = mid + 1;
int current = start;
while (left <= mid)
{
if (right>end || tmp[left] <= tmp[right])
arr[current++] = tmp[left++];
else
arr[current++] = tmp[right++];
}
}
p*****2
发帖数: 21240
5
mid 的确可以自己算。我试试。

【在 l*****a 的大作中提到】
: 第一个问题是为什么要传mid
: 函数里自己算不好吗?

p*****2
发帖数: 21240
6

可以。看来interview exposed和careercup上的sample code还是有很多可以改进的地
方呀。

【在 l*****a 的大作中提到】
: 第一个问题是为什么要传mid
: 函数里自己算不好吗?

q****x
发帖数: 7404
7
我不看他们的代码,只看思路。

【在 p*****2 的大作中提到】
:
: 可以。看来interview exposed和careercup上的sample code还是有很多可以改进的地
: 方呀。

p*****2
发帖数: 21240
8

你是大牛当然不一样了。啥时候也出本书吧,保证比那两本卖得好。

【在 q****x 的大作中提到】
: 我不看他们的代码,只看思路。
l*****a
发帖数: 14598
9
arr.length<=1 是不是更好?
merge这个函数还是用5个参数好点,比较直接(这里跟那个mid不一样)
merge( int[],int start1,int end1,int start2,int end2)

【在 p*****2 的大作中提到】
: 这是全部的代码
: static void MergeSort(int[] arr)
: {
: if (arr == null || arr.Length == 1)
: return;
: Sort(arr, 0, arr.Length - 1);
: }
: static void Sort(int[] arr, int start, int end)
: {
: if (start >= end)

p*****2
发帖数: 21240
10
嗯。是应该<=1。merge标准是5个参数吗?书上是4个。

【在 l*****a 的大作中提到】
: arr.length<=1 是不是更好?
: merge这个函数还是用5个参数好点,比较直接(这里跟那个mid不一样)
: merge( int[],int start1,int end1,int start2,int end2)

相关主题
问一道关于k-way merge的题问一个关于merge sort的小细节
问个CareerCup上external sort的题关于index的问题
sort list java solution问一道题, 不是很难, 但不知道最优解是什么
进入JobHunting版参与讨论
r****t
发帖数: 10904
11
不该递归吧
l*****a
发帖数: 14598
12
不递归咋玩?

【在 r****t 的大作中提到】
: 不该递归吧
r****t
发帖数: 10904
13
http://www.algorithmist.com/index.php/Merge_sort.c

【在 l*****a 的大作中提到】
: 不递归咋玩?
i**********e
发帖数: 1145
14
merge sort 是要递归的。
那个代码有个隐含条件,数组的大小必须是 2 的平方。
那个应该不叫merge sort吧,看上去像是 O(n^2) 的算法。

【在 r****t 的大作中提到】
: http://www.algorithmist.com/index.php/Merge_sort.c
r****t
发帖数: 10904
15
这网页我随手 google 的,sort 部分写的不好。
工业界实用的 merge sort 应该没有递归实现的,复杂度同样是 O(nlogn)

【在 i**********e 的大作中提到】
: merge sort 是要递归的。
: 那个代码有个隐含条件,数组的大小必须是 2 的平方。
: 那个应该不叫merge sort吧,看上去像是 O(n^2) 的算法。

1 (共1页)
进入JobHunting版参与讨论
相关主题
变相的merge sortlinkedin今天的电面题
BST合并的面试题问一道关于k-way merge的题
一个特别的inplace merge two sorted arrays问个CareerCup上external sort的题
刚完的amazon电话面试sort list java solution
ebay 电面问一个关于merge sort的小细节
question about big data关于index的问题
哪位大写给说说 何时用 merge sort, 何时用 quick sort, 何时 heap sort问一道题, 不是很难, 但不知道最优解是什么
LA码农工资咋样?带点面经一个小公司面经
相关话题的讨论汇总
话题: int话题: arr话题: start话题: tmp话题: mid