歸併排序思想應用之----求陣列中的逆序對
求陣列中的逆序對的問題我在大一的時候就遇到過,沒想到三年了。還是不會。。。。問題擺在那裡,你不主動去解決,那個問題永遠在那,今天不會,你不去看,明天還是不會,後天還是不會,,,,。
public class Solution{
public static int counter=0;
public static void group(int []nums,int left,int right){
if(left>right){
return ;
}
int mid=(left+right)/2;
group(nums,left,mid);
group(nums,mid+1,right);
merge(nums,left,mid,right);
}
public static void merge(int []nums,int left,int mid,int right){
int []a=new int[nums.length];
int i=left;
int j=mid+1;
for(int k=left;k<=right;k++){
a[k]=nums[k];
}
for(int k=left;k<=right;k++){
if(i>mid){
a[k]=nums[j++];
}else if(j>right){
a[k]=nums[i++];
}else if(a[i]>a[j]){
a[k]=nums[j++];
// 因為如果a[i]此時比右陣列的當前元素a[j]大,
// 那麼左陣列中a[i]後面的元素就都比a[j]大
// 因為陣列此時是有序陣列 用實際數字來看好像確實是這樣的
counter+=mid-i+1;
}else {
a[k]=nums[i++];
}
}
}
}
相關文章
- 歸併排序-陣列中的逆序對排序陣列
- 歸併排序的經典-求逆序對排序
- HDU 2689 【歸併排序求逆序對】排序
- 歸併排序求逆序數排序
- 逆序對的數量(歸併排序模板)排序
- LeetCode C++ 劍指 Offer 51. 陣列中的逆序對【歸併排序/樹狀陣列/線段樹】LeetCodeC++陣列排序
- 陣列中的逆序對陣列
- HDU 4911 Inversion(歸併排序求逆序數)排序
- 進階指南--超快速排序(歸併+逆序對)排序
- 【劍指offer】陣列中的逆序對陣列
- HDU 2689 Sort it【樹狀陣列求逆序對】陣列
- 歸併和快速排序思想的延伸排序
- JZ-035-陣列中的逆序對陣列
- 左神基礎班02、陣列中的逆序對陣列
- 分治法演算法學習(一)——歸併排序、求最大子陣列和演算法排序陣列
- 劍指Offer-37-陣列中逆序對陣列
- 樹狀陣列和逆序對陣列
- 劍指offer——陣列中的逆序對C++(75%)陣列C++
- 歸併排序:陣列和連結串列的多種實現排序陣列
- JZOJ 3.10 1542——跑步(樹狀陣列+模擬+排序/歸併排序)陣列排序
- LeetCode 493. 翻轉對(歸併排序 || 離散化+樹狀陣列)LeetCode排序陣列
- 陣列元素逆序陣列
- 歸併排序 nO(lgn) 稽核中排序
- 藍橋杯 小朋友排隊 (歸併排序 逆序數 好題)排序
- [排序] 歸併排序排序
- HDU2689 Sort it (樹狀陣列求逆序數)陣列
- 2個有序陣列,歸併重拍陣列
- 7-1將陣列中的數逆序存放陣列
- 歸併排序排序
- 演算法合併排序陣列演算法排序陣列
- HDU 1394 Minimum Inversion Number (樹狀陣列求逆序數)陣列
- 快速排序&&歸併排序排序
- Javascript中陣列方法reduce的妙用之處JavaScript陣列
- 歸併排序詳解及應用排序
- Javascript中的陣列物件排序JavaScript陣列物件排序
- JavaScript 陣列排序 與 求最大值JavaScript陣列排序
- POJ 2299-Ultra-QuickSort(樹狀陣列求逆序數)UI陣列
- 歸併排序與快速排序的簡明實現及對比排序