[問題] 演算法問題

作者: cutekid (可愛小孩子)   2014-10-03 08:54:24
給一字串全由字母 A-Z 組成
將其依字母順序由小到大排序
限定只能相鄰字母兩兩交換
問至少要交換幾次
能排序完成
Ex.
Input : DCBA
Output: 6
請問這有好的算法嗎
謝謝 :)
作者: ckc1ark (偽物)   2014-10-03 09:06:00
從merge sort下手
作者: LPH66 (-6.2598534e+18f)   2014-10-03 09:19:00
所求為逆序對的數目, 不過基本上就是 merge sort...
作者: cutekid (可愛小孩子)   2014-10-03 09:36:00
謝謝 c 大 和 L 大L 大好厲害,可以想到是求「逆序對」數目,讚歎!
作者: springman (司布林)   2014-10-03 20:06:00
merge sort 可以做到「只能相鄰字母交換」嗎?感覺上好像 bubble sort 與 inersetion sort 可以。抱歉,打錯字,insertion sort。
作者: johnathan717 (柏良)   2014-10-04 01:31:00
用什麼sort都可以,只是merge sort能O(nlgn)算逆序數
作者: DJWS (...)   2014-10-04 14:07:00
那為什麼不用counting sort? 聽起來更快springman: merge sort不能做到相鄰字母交換 但是改一改之後可以用來數逆序對
作者: springman (司布林)   2014-10-04 20:10:00
說得也是,只是要計算交換幾次而已,謝謝。

Links booklink

Contact Us: admin [ a t ] ucptt.com