topics

全部话题 - 话题: sorts
首页 4 5 6 7 8 末页 (共10页)
I**A
发帖数: 2345
1
来自主题: JobHunting版 - 这个rotated sorted array问题
Given a sorted list of N integers that has been rotated an unknown number of
positions, e.g., 15 36 1 7 12 13 14。 design an lg(n) algorithm to
determine if a given integer is in the list
你们谁写过code,可否share share? 我比较着比较着就乱了。。
j**l
发帖数: 2911
2
来自主题: JobHunting版 - 这个rotated sorted array问题
如果没有重复元素
假定当前搜索区间开始的下标是s, 中点的下标是m, 结束的下标是e,
要查找的数是x,可以证明A[s] <= A[m]和A[m] <= A[e]至少有一个成立
if (s > e)
查找失败返回;
m = (s + e) / 2;
if (x == A[m] || x == A[s] || x == A[e])
查找成功返回;
if (A[s] <= A[m])
{
if (x > A[s] && x < A[m]
在区间[s+1, m-1]继续找
else
在区间[m+1, e-1]继续找
}
else if (A[m] <= A[e])
{
if (x > A[m] && x < A[e]
在区间[m+1, e-1]继续找
else
在区间[s+1, m-1]继续找
}
else
{
// This is not possible if the original array is circular sorted
}
j**l
发帖数: 2911
3
来自主题: JobHunting版 - 这个rotated sorted array问题
二分法找pivot (reset point)的下标, 假定没有重复元素
int findResetPoint(int s[], int start, int end)
{
if (s == NULL || start < 0 || end < 0 || start > end)
return -1;
// At least three elements in the range
while (end - start > 1)
{
// sorted case, no rotation
if (s[start] < s[end])
return start;
int mid = (start + end) / 2;
if (s[mid] < s[mid - 1])
return mid;
if (s[start] < s[mid])
start = mid + 1;
els
y*********e
发帖数: 518
4
来自主题: JobHunting版 - 这个rotated sorted array问题
贴一贴我的Java代码,希望有帮助!
/*
* Given a sorted array, which is rightwards rotated X steps.
* Find X.
*/
public static int findRotate(int[] array) {
return findRotate(array, 0, array.length - 1);
}
/*
* Approach:
*
* Find the first element pair x, y such that x > y.
* Then the index of x is the answer.
*
* 1. Take the median value. If it is greater than its previous
* element, then the index of the median is what we look for.
s*********t
发帖数: 1663
5
来自主题: JobHunting版 - C++ Q41: std::sort (C4)
read the signiture of sort..
only thing worth mention here is: v + 1000 correspond to v's end() since v h
as a type of int.
h**6
发帖数: 4160
6
来自主题: JobHunting版 - C++ Q41: std::sort (C4)
说实话,这理由还真不好说,一直都是这么用的。
如果v是一个vector,那么应该用 std::sort(v.begin(),v.end()) 进行排序。
作为数组,数组名 v 同时也表示第一个元素的地址,相当于 v.begin(),而 v+1000 则是最后一个元素之后的地址,相当于 v.end()
b********e
发帖数: 693
7
来自主题: JobHunting版 - O(N) sort integer array
这个怎么做到? 如果是32位integer的话 如果是做redix sort的话,是不是就可以O(N)了
b********e
发帖数: 693
8
来自主题: JobHunting版 - O(N) sort integer array
radix sort应该能实现吧
我知道hash是能实现的
V*****i
发帖数: 92
9
来自主题: JobHunting版 - 问一个关于merge sort的小细节
在merge sort中,需要设一个sentinel,大家都是用什么的?在现实编程中,你一般已
经知道了值的范围,所以随便设个很大的数就可以了,但总觉得这在面试中不够严谨,
大家是怎么办的?我试过numerical_limit<>::max(),但发觉很慢。
类似的是,在hash table open addressing算法中,需要设nil和delete,大家是设成
什么的?
d**e
发帖数: 6098
10
来自主题: JobHunting版 - 问一个关于merge sort的小细节
merge sort, sentinel? 为什么?
c******n
发帖数: 4965
11
A[0] .... A[n]
kind of "sort" it so that
A[i] < A[j] where j> i+K, and i in [0, n-K]
I remember working it out before, but forgot
s*******e
发帖数: 93
12
如果是j= i + k 就不难了。
直接把A 分成 k 个 subarray
第一个是 A[0], A[0+k], A[0+2k]...
第二个是 A[1], A[1+k], A[1+2k]...
..
最后是 A[k-1], A[2k-1]..
然后sort 每一个subarray
应该是 n log(n/k)
如果是A[i] < A[j] where j> i+K 好像还有点难
f***g
发帖数: 214
13
来自主题: JobHunting版 - 两个Sorted Array,找K smallest element
相似题目:两个sorted Array找中数。
k****n
发帖数: 8684
14
来自主题: JobHunting版 - 怎么sort inside a string itself in python
not to sort a list of string
谢谢大牛解答。
s*******n
发帖数: 344
15
来自主题: JobHunting版 - external sorting 的问题
大文件用 external sorting来进行排序
先分块排序,然后merge.
但是merge这个环节怎么除里?内存不够啊还是 如何 merge?
多谢解答
g***s
发帖数: 3811
16
来自主题: JobHunting版 - find median for k sorted arrays
Even if it is not sorted, the finding median of all (k*n) item only needs
O(k*n)
g***s
发帖数: 3811
17
来自主题: JobHunting版 - find median for k sorted arrays
1. put all number into one array, size = k*n O(k*n)
2. find the median of the array O(k*n)
I think LZ is asking for a better solution since the above method doesn't
care if it is sorted or not in the k arrays.
【 在 lolhaha (haha) 的大作中提到: 】
a******7
发帖数: 106
18
来自主题: JobHunting版 - find median for k sorted arrays
the book already assumed each sorting in O(1) time, when the sub-array is
small enough. I don't think we can do better in worst case. On average case,
maybe.
H******7
发帖数: 1728
19
external sorting的最后一部 merge的时候,是不是要消耗很多I/O
因为内存就那么大。之能不断的读写 这要以高IO为代价 我理解的对不对?xi谢谢
h*****g
发帖数: 312
20
Let’s called array1 as A and array2 as B, each with size m and n.
正常的话,O(m+n)应该可以搞定,但是。。。
if n is very very large, the memory can not hold it.
i) What if elements of array B is stored on disk, and the memory is limited
such that you cannot load all elements into the memory at once?
ii) How will the complexity change in this case? Are there any factors you
need to consider?
iii) How do you change your solution to adapt to this situation?
如果用external sort类似的方法,该咋做呢?
f*******t
发帖数: 7549
21
正好这帖里有:
http://www.mitbbs.com/article_t/JobHunting/31909771.html
一般情况下用counting sort比较好
s******d
发帖数: 61
22
我查了下counting sort, 用另外的数组来存原数组元素排序后的位置, 但是只单个数
组的排序, 不清楚怎么应用到这里?
c****p
发帖数: 6474
23
来自主题: JobHunting版 - 发个in-place merge sort的链接
http://blog.ibread.net/345/in-place-merge-sort/
声称O(n) time O(1) space,还没看完。
c****p
发帖数: 6474
24
来自主题: JobHunting版 - 发个in-place merge sort的链接
http://blog.ibread.net/345/in-place-merge-sort/
声称O(n) time O(1) space,还没看完。
f****4
发帖数: 1359
25
原帖:http://www.mitbbs.com/article_t/Programming/31198701.html
Two reverse sorted arrays A and B have been given.such that size of A is m
and size of B is n You need to find the k th largest sum (a+b) where a is
taken from A and b is taken from B. such that k < m*n
有O(n)的解么?怎么转化成杨矩啊?
谢谢
f****4
发帖数: 1359
26
原帖:http://www.mitbbs.com/article_t/Programming/31198701.html
Two reverse sorted arrays A and B have been given.such that size of A is m
and size of B is n You need to find the k th largest sum (a+b) where a is
taken from A and b is taken from B. such that k < m*n
有O(n)的解么?怎么转化成杨矩啊?
谢谢
k****n
发帖数: 369
27
最简单的办法是坐n-way merge sort
q****x
发帖数: 7404
28
来自主题: JobHunting版 - double link list, sort in nLog(n)
merge sort ok bah
b*****c
发帖数: 1103
29
来自主题: JobHunting版 - double link list, sort in nLog(n)
merge sort怎么一分为2递归呢,不懂
r****t
发帖数: 10904
30
来自主题: JobHunting版 - 这个sort()降序代码是什么意思
一般 sort 方法都接受一个可定制的 compare function
i******e
发帖数: 273
31
来自主题: JobHunting版 - 这个sort()降序代码是什么意思
SortDESC 是function object 也叫functor. 是sort algorithm的一个参数
G**********s
发帖数: 70
32
来自主题: JobHunting版 - 关于external sort/search & 234tree/rb tree
有没有人在 A/M/G onsite 时候,遇到过以下知识点相关的题呢?
234tree
RBtree
splayTree
nWayMergeSort(External sort)
犹豫是否要花时间把这些也复习。xiexie!
g*********e
发帖数: 14401
33
来自主题: JobHunting版 - 请教一个external sort的问题
wiki external sorting
f*******n
发帖数: 12623
34
来自主题: JobHunting版 - 问一个merge k sorted array的问题
的确是nlogk。O(1)可以拿到top element,但是要remove它,还是要O(log k)。
假如k=n,那按照他说的就可以用这个方法O(n)去sort一个unsorted的array了。
w****o
发帖数: 2260
35
来自主题: JobHunting版 - 问一道在sorted array里search的问题
在这个班上看见过,但是具体的题的描述我不记得了。
好像是给一个 sorted array of integers,给一个value,找这个value.
可是有可能这个value在数组里出现多次。
到底这个题是要找出value在数组里出现的次数?还是要找出一个表示index的范围?
比如数组 a=[1 2 3 4 6 6 6 9 10], value=6,
是要求返回3 (6出现的次数), 还是要返回{4, 6}? 因为a[4] = 6, a[6] =6?
到底面试的时候,问到的是哪种情况?
谢谢!
k*******r
发帖数: 355
36
求两个sorted array合并后的median这题,我知道网上有答案可以在log(min(m,n))时间复杂度内做完,就是不断比较两个array各自的中位数缩小范围,但具体写代码也太琐碎了吧。
主要是数组元素为奇数和偶数时,中位数定义不同,对一短一长两个数组,就得分别考虑奇奇,奇偶,偶奇,偶偶4种情况,每种里面比较中位数大小又是3种可能....
有没有比较clean的代码,在30行代码左右能搞定这题的。(我觉得太长的代码,白板也很难写对阿)
n*p
发帖数: 298
37
就是有millions of words
要进行sorting
而且是multi-core或者MPI
想用hash table加linked list
有没有相关的C代码
j********x
发帖数: 2330
38
假设是1千万的单词
每个单词平均长度为7
才70Mb。。。
直接上stl sort都搞的定
非要弄多线程 mpi,那也是直截了当的事情。。
s*****n
发帖数: 162
39
来自主题: JobHunting版 - 关于K个sorted数组中第n大数的问题
n个sorted arrays,每个有n元素,求第k大的数,江湖传闻有paper给出了O(n)的解,
不过解法应该很复杂,因为这题反复讨论过,至今也没有见到O(n)的详解。退求其次,
有O(n log n)的解法,用到median of medians和weighted median。这个解法比用堆的
O(k log n)算法,有更好的时间复杂度,因为in the worst case, k是O(n^2)。但这个
解法在面试中,要写出code来,估计也不太可能。
g*********e
发帖数: 14401
40
来自主题: JobHunting版 - 32MB 内存如何 sort 1GB data
wiki external sorting
w****x
发帖数: 2483
41
//Print strings with certain prefix in a sorted string array
void GetIndex(const char* strs[], int nBeg, int nEnd, char chr, int nPos,
OUT int& index1, int& index2);
void PrintComPrefix(const char* strs[], int n, const char* szPre)
{
assert(strs && szPre && n > 0);
const char* p = szPre;
int nIndex1 = 0;
int nIndex2 = n-1;
while (*p != 0 && nIndex1 >= 0)
{
GetIndex(strs, nIndex1, nIndex2, *p, p-szPre, nIndex1, nIndex2);
p++;
}
if (nIndex1 >= 0 ... 阅读全帖
w****x
发帖数: 2483
42

heap sort稳定nlogn, 但是不是stable的, 所有存在swap的排序算法都不是稳定的
l***i
发帖数: 1309
g*********e
发帖数: 14401
a*******y
发帖数: 1040
45
来自主题: JobHunting版 - find index of an element in sorted array
sorted array with repeated elements
for given element, find out its range.
e.g. A A B B B B B C C D D E F G, given B, the output should be [2, 6]
binary search的变种
我感觉这个不是O(logn)啊
code是发现repeat次数的
int binarySearch(char* charset, int start, int end, char target)
{
if (charset == NULL) return 0;
if (start == end)
{
if (charset[start] == target) return 1;
else return 0;
}
int mid = start + (end-start)/2;

int left = 0, right = 0;
left = binarySearch(cha... 阅读全帖
S**I
发帖数: 15689
46
来自主题: JobHunting版 - find index of an element in sorted array
Read the source code of equal_range in a C++ implementation. In both VC and
GCC, implementation of equal_range is based on lower_bound and upper_bound,
both of which have log(n) complexity if the range to be searched is a sorted
array. So equal_range has complexity 2log(n).
c****g
发帖数: 85
47
code is here. Please comment on this.
平时不用Java的,发现做题用Java比C++方便(没指针,有更多的函数,呵呵)
另外,函数返回一个boolean(有可能数组根本没有k这么多elements)和一个number。
查了网,说可以用一个临时类,来返回其对象。我嫌麻烦,用了一个输入变量来返回
number值。但是直接不能返回,所以用了int[]。觉得有点awkward。不知你们怎么处理?
package leetcode;
import java.util.*;
public class kthSmallestElementTwoSortedArrays_Ver2 {

public static void main(String[] str)
{
// build two sorted arrays:
int[] A = {1,3,4,4, 7,9,10, 13, 15, 19, 20, 33};
int[] B = {2,5,5,6,12 };

// ... 阅读全帖
l****c
发帖数: 782
48
If the numbers of two sorted array are huge enough, can I write the code as
followed?
int returnKint(int* s1, int* s2, int start1, int start2, int k){
if (k == 1)
return s1[start1] else {
if (s1[start1+k/2-1] < s2[start2+k/2-1])
return returnKint(s1, s2, start1+k/2, start2, k-k/2);
else
return returnKint(s1, s2, start1, start2+k/2, k-k/2);
}
}
g****y
发帖数: 240
49
贴个python版的
def findk(alist, blist, k):
"""Given two sorted array, find kth minimum element"""
m = len(alist)
n = len(blist)
assert (k <= m + n)

if m == 0:
return blist[k - 1]
elif n == 0:
return alist[k - 1]

if k == 1:
return min(alist[0], blist[0])

# divide k into two even parts as much as possible
ai = min(k // 2, m)
bi = k - ai
if bi > n:
bi = n
ai = k - bi

if alist[ai - 1] == blist[... 阅读全帖
Y********f
发帖数: 410
50
来自主题: JobHunting版 - 请教Find Median Of Two Sorted Arrays
刚做了这道题,leetcode上为了不调用find kth elments两次写了一个比较复杂的。我
写了一个稍微简单点的,实际上也是基于find kth element.
double median2Array(int* arrA, int lenA, int* arrB, int lenB, int k, int
isEven)
{
if (lenA == 0)
return isEven ? (arrB[k-1] + arrB[k]) / 2.0 : arrB[k-1];
else if (lenB == 0)
return isEven ? (arrA[k-1] + arrA[k]) / 2.0 : arrA[k-1];
else if (k == 1)
{
vector vect(min(2, lenA) + min(2, lenB));
copy(arrA, arrA + min(2, lenA), vect.begin());
copy(ar... 阅读全帖
首页 4 5 6 7 8 末页 (共10页)