python逆序数怎么求_怎么算逆序数?急~~~!!!
展開全部
可使用直bai接計(jì)數(shù)法,計(jì)算一個(gè)du排列的逆序數(shù)的直接zhi方法是逐個(gè)dao枚舉逆序,同時(shí)統(tǒng)計(jì)個(gè)內(nèi)數(shù)。
舉個(gè)例子:
標(biāo)準(zhǔn)列是容1 2 3 4 5,那么 5 4 3 2 1 的逆序數(shù)算法:
看第二個(gè),4之前有一個(gè)5,在標(biāo)準(zhǔn)列中5在4的后面,所以記1個(gè)。
類似的,第三個(gè) 3 之前有 4 5 都是在標(biāo)準(zhǔn)列中3的后面,所以記2個(gè)。
同樣的,2 之前有3個(gè),1之前有4個(gè),將這些數(shù)加起來(lái)就是逆序數(shù)=1+2+3+4=10。
擴(kuò)展資料:
其它算法:
1、歸并排序
歸并排序是將數(shù)列a[l,h]分成兩半a[l,mid]和a[mid+1,h]分別進(jìn)行歸并排序,然后再將這兩半合并起來(lái)。在合并的過(guò)程中(設(shè)l<=i<=mid,mid+1<=j<=h),當(dāng)a[i]<=a[j]時(shí),并不產(chǎn)生逆序數(shù);
當(dāng)a[i]>a[j]時(shí),在前半部分中比a[i]大的數(shù)都比a[j]大,將a[j]放在a[i]前面的話,逆序數(shù)要加上mid+1-i。因此,可以在歸并排序中的合并過(guò)程中計(jì)算逆序數(shù)。
2、樹狀數(shù)組
由于樹狀數(shù)組的特性,求和是從當(dāng)前節(jié)點(diǎn)往前求,所以,這里要查詢插入當(dāng)前數(shù)值之時(shí),要統(tǒng)計(jì)有多少個(gè)小于該數(shù)值的數(shù)還沒(méi)插入,這些沒(méi)插入的數(shù),都會(huì)在后面插入,也就形成了逆序數(shù)。
總結(jié)
以上是生活随笔為你收集整理的python逆序数怎么求_怎么算逆序数?急~~~!!!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何固定最小宽度_如何使用更新的HTML
- 下一篇: python ftp timeout_p