求排序算法思路,使得 array[0]<array[1]>array[2]<array[3]...

2017 年 11 月 27 日
 liemehoc

python,如输入[8,8,4,6,2,7],输出[4,8,6,7,2,8]

4267 次点击
所在节点    Python
20 条回复
blueset
2017 年 11 月 27 日
排序,然后左右交替取数?

8 8 4 6 2 7 → 2 4 6 7 8 8

2 4 6 (7 8 8)
- 8 8 7 (6 4 2)

2 <= 8 >= 4 <= 8 >= 6 <= 7
jzy
2017 年 11 月 27 日
从小到大排序,前面一半放奇数位,后面一半放偶数位。如果奇数位和偶数位首位相等,应该是无解了
momocraft
2017 年 11 月 27 日
先排成升序然后反复横跳地取: arr[3] --(向左)-- arr[2] --(向右)-- arr[4] --(向左)--
lhx2008
2017 年 11 月 27 日
答案不唯一呀,还要随机分布么
ballshapesdsd
2017 年 11 月 27 日
leetcode 上有这道题。。一模一样的
liemehoc
2017 年 11 月 27 日
@blueset
@jzy
@momocraft
我第一反应也是这个,不知道有没有更优雅的解法


@lhx2008 是的,能不能算出所有有效解
liemehoc
2017 年 11 月 27 日
@ballshapesdsd 名字叫啥
ballshapesdsd
2017 年 11 月 27 日
@liemehoc 噗,找了半天
https://leetcode.com/problems/wiggle-subsequence/description/
o(n)时间复杂度的解法
liemehoc
2017 年 11 月 27 日
@ballshapesdsd 学习了,解法有意思
SlipStupig
2017 年 11 月 27 日
我今天也遇到类似的问题:
python:
list_a = ['m', 'z', 'k', 'i']
dict_a = {'z': 2, ‘ k ’: 3, 'm':'a', 'i': -1}

dict_a 有什么办法能优雅的按照 list_a 中的 key 顺序排列呢?
jmc891205
2017 年 11 月 27 日
@SlipStupig
[dict_a[k] for k in list_a]这样?
dangoron
2017 年 11 月 27 日
shell sort 做到一半的感觉。。
panda0
2017 年 11 月 28 日
@jmc891205 这样是个 list 了吧
nondanee
2017 年 11 月 28 日
@SlipStupig dict 就是无序的呀,用 collections.OrderedDict 哇
LukeXuan
2017 年 11 月 28 日
找到中位数(O(n)),然后比中位数小的放在偶数位,大的放在奇数位。
vegito2002
2017 年 11 月 28 日
Wiggle Sort, Google 原题, LC 上面有
SlipStupig
2017 年 11 月 28 日
@jmc891205 哈哈,好像是这样,但是如果是两个 list 呢?
dangyuluo
2017 年 11 月 28 日
我觉得答案不唯一吧。
leetao94
2017 年 11 月 28 日
liemehoc
2017 年 11 月 29 日
@vegito2002
@dangyuluo
@leetao94
扩展一下问题,如果要求所有满足规则的解呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/410029

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX