第三章:查詢與排序(下)----------- 3.14 逆序對個數
逆序對個數:一個數列,如果左邊的數大,右邊的數小,則稱這兩個數為一個逆序對。求出一個數列中有多少個逆序對。
PS:學會畫示意圖,輔助思考。
假設陣列的兩段分別有序,藉助一個輔助陣列來快取原陣列,用歸併的思路將元素從輔助陣列拷貝回原陣列。
#include<iostream>
using namespace std;
int nixu=0;
void merge(int arr[],int p,int mid,int r){
int len=r-p+1;
int helper[len];
//拷貝到輔助空間的相同位置
for(int i=0;i<len;i++){
helper[i]=arr[i];
}
//輔助陣列的兩個指標
int left=p,right=mid+1;
//原始陣列的指標
int current=p;
while(left<=mid&&right<=r){
if(helper[left]<=helper[right]){
arr[current++]=helper[left++];
}
else{ //右邊小
arr[current++]=helper[right++];
nixu+=mid-left+1;
}
}
//這樣做完後,左邊指標可能沒到頭;右邊的沒到頭也沒關係
while(left<=mid){
arr[current]=helper[left];
current++;
left++;
}
}
void sort(int A[],int p,int r){
if(p<r){
int mid=p+((r-p)>>1);
sort(A,p,mid);//對左側排序
sort(A,mid+1,r);//對右側排序
merge(A,p,mid,r);//合併
}
}
int main(){
int arr[]={1,7,2,9,3,5,6,8};
int len=8;
sort(arr,0,7);
cout<<nixu;
return 0;
}
結果:
相關文章
- 第三章:查詢與排序(下)----------- 3.21基數排序排序
- 第三章:查詢與排序(下)----------- 3.19 計數排序排序
- 第三章:查詢與排序(下)----------- 3.20桶排序排序
- 第三章:查詢與排序(下)----------- 3.28 特殊排序(利用sort函式)排序函式
- 第三章:查詢與排序(下)----------- 3.27 用計數排序解決員工年齡問題排序
- 第三章:查詢與排序(下)----------- 3.22 總結:10種排序演算法的對比分析排序演算法
- 第三章:查詢與排序(下)----------- 3.16堆的概念及堆排序思路排序
- 第三章:查詢與排序(下)----------- 3.10 實戰解題_哪個數字超過了一半?排序
- 逆序對的數量(歸併排序模板)排序
- 演算法之逆序對兒查詢演算法
- 第三章:查詢與排序(下)----------- 3.9 最快效率求出亂序陣列中第k小的數排序陣列
- 第三章:查詢與排序(下)----------- 3.15基礎學習_樹、二叉樹、堆排序排序二叉樹
- 第三章:查詢與排序(下)------------- 3.8題解_調整陣列順序-奇數在左偶數在右排序陣列
- 查詢與排序02,折半查詢排序
- 第三章:查詢與排序(下)----------- 3.12 實踐_最小可用id是多少排序
- 第三章:查詢與排序(下)----------- 3.23 相關題解:排序陣列中找和的因子排序陣列
- 第三章 :查詢與排序-------3.2你需要掌握的快速排序演算法排序演算法
- 第三章:查詢與排序(下)----------- 3.11 趣味擴充_尋找發帖水王排序
- 第三章:查詢與排序(下)----------- 3.29 題解:判斷陣列的包含問題排序陣列
- 歸併排序求逆序數排序
- 查詢與排序05,氣泡排序排序
- 查詢與排序04,插入排序排序
- 查詢與排序03,選擇排序排序
- 第三章 :查詢與排序(下)-------3.1分治法介紹及關鍵點解析排序
- 第二章 :查詢與排序---------遞迴、查詢與排序補充排序遞迴
- 第三章 :查詢與排序-------3.7分治模式的完美詮釋_歸併排序排序模式
- 大資料MongoDB之mgo驅動如何對查詢結果進行排序(正序逆序多欄位排序)?大資料MongoDB排序
- 逆序對的數量
- Elasticsearch 按照標籤匹配個數優先排序查詢Elasticsearch排序
- 第三章 :查詢與排序-------3.5快排之三指標分割槽法排序指標
- 第三章 :查詢與排序-------3.6快排在工程實踐中的優化排序優化
- 第二章 :查詢與排序-------希爾排序排序
- HDU 2689 【歸併排序求逆序對】排序
- 歸併排序的經典-求逆序對排序
- 歸併排序-陣列中的逆序對排序陣列
- 第三章 :查詢與排序-------3.4快排之雙向掃描分割槽法排序
- ORDER對查詢結果進行排序排序
- 第三章:查詢與排序(下)----------- 3.25 知其然知其所以然:小頂堆與topK的具體程式碼實現排序TopK