由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教一道面试题,跟数组排序有关
相关主题
一道Google面试题问个google面试题
问一道数组题一道面试题。
请问一道google面试题请教一道面试题
一道面试题:数组 in-place shuffle来讨教个面试题
面试题讨论:如何在一批文件中找到相同的文件国内小学生奥数题目~~ (转载)
这道题太神奇了,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),吐槽一个面试
求教移除数组重复元素的时间复杂度!!今天面试问题:有一个整数数组,如何find kth smallest element,如果数据是dynamic
面试题面试中举例常见的高效排序算法, 为什么都举quicksort和mergesort, 很少说heapsort呢
相关话题的讨论汇总
话题: 数字话题: 奇数话题: 排序话题: int话题: 偶数
进入JobHunting版参与讨论
1 (共1页)
w********8
发帖数: 55
1
数组排序, 排成 a1a3a5。。。这种形式。
想了半天,没想到比O(n^2)更好的算法。
请教大牛们。
l*********8
发帖数: 4642
2
两两比较相邻数字,把大的数字放到下标为奇数的位置。 O(n)

【在 w********8 的大作中提到】
: 数组排序, 排成 a1a3a5。。。这种形式。
: 想了半天,没想到比O(n^2)更好的算法。
: 请教大牛们。

y**********a
发帖数: 824
3
O(nlog n)
把临近的奇数换到偶数(index)上
void weirdSort(int[]A) {
assert((A.length&1)==1);
Arrays.sort(A);
for (int i=1;i+1 {A[i]^=A[i+1];A[i+1]^=A[i];A[i]^=A[i+1];}
}
w********8
发帖数: 55
4

原来如此,谢谢楼上二位!

【在 y**********a 的大作中提到】
: O(nlog n)
: 把临近的奇数换到偶数(index)上
: void weirdSort(int[]A) {
: assert((A.length&1)==1);
: Arrays.sort(A);
: for (int i=1;i+1: {A[i]^=A[i+1];A[i+1]^=A[i];A[i]^=A[i+1];}
: }

w********8
发帖数: 55
5
这个O(n)的算法更好一点。
谢谢!

【在 l*********8 的大作中提到】
: 两两比较相邻数字,把大的数字放到下标为奇数的位置。 O(n)
p********n
发帖数: 165
6
先排序就得nlogn
然后再比较奇偶 n
所以总体还是O(nlogn)
l*********b
发帖数: 65
7
其实不用奇偶吧 只要两两比较数字 把不满足要求的 和下一个数字对调 就好啦。
比如 7,8 。7的位置应该是大数, 但是它又比8小 所以就和8调换 这样变成 8,7。 就
一定满足啦 因为8肯定是因为比7大才被调换的 所以一定也比7前面的数字大。
说得不太清楚 试一下就好啦。
p********n
发帖数: 165
8
5< 6 > 2 < 3 前4个数字都是对的, 突然第五个数字出现个1000 你怎么对调?怎么
保证O(n)?
s*********s
发帖数: 5
9
O(N)可解
A[i]为当前考察对象,假设 当i是奇数时,如果A[i] 当i是偶数时,如果A[i]>A[i+1] 则swap(A[i], A[i+1])
5< 6 > 2 < 3 前4个数字都是对的, 突然第五个数字出现个1000 你怎么对调?
只需要将3和1000交换即可
s*******7
发帖数: 23
10
我觉得O(n) 可以做
1. 把无序的array给heapify
2. 建立binary tree, 建的方法是 Ai 的左边 是 A(2i+1), 右边子节点是 A(
2i + 2)
3. 把这个树, inorder打印就行了
泡这个版多年, 作点贡献 :)
A****0
发帖数: 1073
11
这题我感觉有个陷阱——Duplicates,当duplicate数超过数组长度一半时无解。
而且有duplicate时只有sort的办法最好,其他好些办法都不行。
w********8
发帖数: 55
12
没错,非常好的分析!
面试时候要注意到。
谢谢

【在 A****0 的大作中提到】
: 这题我感觉有个陷阱——Duplicates,当duplicate数超过数组长度一半时无解。
: 而且有duplicate时只有sort的办法最好,其他好些办法都不行。

B********4
发帖数: 7156
13
这题有个不清楚的地方,比如a1和a3的关系怎样?必须a1 如果a1
【在 w********8 的大作中提到】
: 数组排序, 排成 a1a3a5。。。这种形式。
: 想了半天,没想到比O(n^2)更好的算法。
: 请教大牛们。

1 (共1页)
进入JobHunting版参与讨论
相关主题
面试中举例常见的高效排序算法, 为什么都举quicksort和mergesort, 很少说heapsort呢面试题讨论:如何在一批文件中找到相同的文件
不明白“整数流的中位数”为啥用max heap和min heap比binary sort 好这道题太神奇了,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),
一道C/C++的面试题求教移除数组重复元素的时间复杂度!!
2轮Amazon电面面试题
一道Google面试题问个google面试题
问一道数组题一道面试题。
请问一道google面试题请教一道面试题
一道面试题:数组 in-place shuffle来讨教个面试题
相关话题的讨论汇总
话题: 数字话题: 奇数话题: 排序话题: int话题: 偶数