設a為乙個有n個數字的有序集,其中所有數字各不相同。如果存在整數i、j,使得1<=ia[j],則這個有序對稱為a的乙個逆序對。
例如:集合的逆序對有、、、共4個。
而逆序對問題,即:對給定的陣列序列,求其逆序對的數量。
從定義上分析,逆序對就是數列中任意兩個數滿足大的在前,小的在後的組合。如果將這些逆序對都調整為順序,那麼整個數列就變的有序,即排序。
因而容易想到氣泡排序的機制正好是利用消除逆序來實現的,也就是說,交換相鄰兩個逆序數,最終實現整個序列有序,那麼交換的次數即為逆序對的數量。
但由於氣泡排序本身效率不高,時間複雜度為o(n^2),對於n較大的情況下不適用,因此我們用歸併排序來解決逆序對問題。
/*只需修改原有歸併程式,當右邊序列元素為較小值時,就統計其產生的逆序對數量,即可完成逆序對統計*/
void msort(int s,int t)
else
}while(i<=mid)
while(j<=t)
for(i=s;i<=t;i++)
a[i]=r[i];
}
理論基礎 排序 計數排序
計數排序是一種穩定的排序,屬於非比較類排序,其基本思想是 對於給定的輸入序列中的每乙個元素 x,確定該序列中值小於 x 的元素的個數,一旦有了這個資訊,就可以將 x 直接存放到最終的輸出序列的正確位置上。例如,如果輸入序列中只有 17 個元素的值小於 x 的值,則 x 可以直接存放在輸出序列的第 1...
TCP IP理論基礎
一 tcp ip的分層模型 osi協議參考模型,它是基於國際標準化組織 iso 的建議發展起來的,它分為7個層次 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層及物理層。這個7層的協議模型雖然規定得非常細緻和完善,但在實際中卻得不到廣泛的應用,其重要的原因之一就在於它過於複雜。但它仍是此後很多協...
TCP IP理論基礎
linux中網路棧的介紹一般分為四層的internet模型。分別為應用層 傳輸層 網際層和網路介面。tcp ip實際上是乙個協同工作的通訊家族,為網路資料通訊提供通路。為方便將tcp ip協議族大致上分為三部分 1.internet協議 ip 這一部分也稱為網路層。主要包括ip icmp和arp。其...