Prob_Solve 板


LINE

各位好,小弟有一个演算法的问题想请教各位大大 有一个阵列,内有若N个不相同且随机排列的数字 如:2 8 6 1 9 10 13 0 我需要依照阵列顺序把排在自己之後而且比自己小的数字印出来 像这样: 2 1 2 0 8 6 8 1 8 0 6 1 6 0 9 0 10 0 13 0 我知道如果用回圈一个一个检查总是有结果的 但是演算法效率是O(n^2) 想请问各位有没有比O(n^2)更快的做法?? 我想了很久,但都没有比较好的解法... 不好意思麻烦各位了 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 120.113.124.157
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Prob_Solve/M.1477893613.A.FC7.html
1F:推 ddavid: 极端来讲,我给你8 7 6 5 4 3 2 1,你光是印出答案就需要 10/31 14:35
2F:→ ddavid: O(n^2),顶多系数可以给你最小化到1/2罢了 10/31 14:36
是呀...这一点让人很头疼... 那如果说今天在不要求顺序的状况下,有可能提升速度吗...
3F:推 ddavid: 直接做O(n log n) sort并保留原始顺序的link,期待印出步 10/31 14:50
4F:→ ddavid: 骤的次数期望值落在O(n log n)也许比较实在 10/31 14:52
5F:推 CaptainH: 考虑merge sort,在merge时加个一两行就行了 10/31 15:01
mergeSort吗... 可是mergeSort在merge时一次都只看左右两边各一个数字 如果今天左边的阵列数字全都比右边的大,那就会出问题了... 但这似乎也是个好主意...透过merge时将左右两边排好 我让左边的最大值开始扫描右边的最小值, 左>右就输出值对,左<右就换左遍次大的重来一遍 左边全部扫完之後就把两边merge起来 可是演算法效率... mergeSort本身效率是O(nlogn),但因为要扫描左右两边的大小 势必得再加上这个步骤的成本... 刚刚拿大师定理算了一下,最糟糕的状况(已经由大排到小)是O(n^2) 最好的状况(由小到大)是O(nlogn),平均状况的话我在算算看 不过似乎是可行的做法.... .... 不行,平均状况的结果算来算去应该也会是O(n^2) 还需要更快的方法才行
6F:→ pttworld: 类别二栏位index和value,排序後判断索引输出得解。 10/31 16:29
是像这样吗? 原阵列 2 8 6 1 9 10 13 0 索引 0 1 2 3 4 5 6 7 排序後 value 0 1 2 6 8 9 10 13 index 7 3 0 2 1 4 5 6 然後从13开始,往前找index比它还大的数字吗? 可是这样子的效率还是O(n^2).... 或许是我误解大大的意思了?? ※ 编辑: jason21716 (120.113.124.157), 10/31/2016 17:40:14
7F:推 s89162504: mergesort怎会变成O(n^2) 10/31 19:52
8F:→ pttworld: 回原po,n个都要列出关系起算就n往上了。一楼说得很白。 10/31 20:05
9F:推 c225: 解的大小本来就Ω(n^2)了 所以merge sort复杂度应该是 11/01 00:20
10F:→ c225: O(nlogn + k) k是解大小~ 11/01 00:21
11F:推 DJWS: 比较快的方法应该是hashing/counting sort/位元操作之类的 11/01 10:38
12F:→ DJWS: 如果只能两两比较的话,那麽就是推文一楼说的那样子,接下来 11/01 10:39
13F:→ DJWS: 的方向会是随机算法/平滑分析之类的 11/01 10:39
14F:→ DJWS: 另外这题有个有趣的性质:当数值(连带索引值)重新排序之後 11/01 10:41
15F:→ DJWS: 问题变成找到後方的更大索引值,类似於原本问题,但是索引值 11/01 10:42
16F:→ DJWS: 的范围会是连续正整数,成为更简单一点的问题 11/01 10:43
17F:→ DJWS: 至於这性质有什麽用...我也不知道 XD 11/01 10:43
18F:→ rifiz: count inversion problem? 11/07 02:24
19F:推 Astar5566: 没错 只是要印出来 11/07 16:28
20F:推 HoloLens: 看起来超像逆序数对,merge nlogn不会漏判啊 11/28 23:23
21F:→ HoloLens: 为何要扫左右两边? 11/28 23:24







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP