/**
* 歸併排序
* 這是採用分治法的一種典型應用
* 也就是分治替換的原則,對乙個序列進行分治,然後使其有序,
* 使其有序的關鍵便是對分組後的序列再次分治,一直如此到最後進行比較替換(遞迴)
* 然後歸併成乙個有序序列
* * 將2個序列進行比較交換的原理是採用雙指標方法,在開始的時候,同時指向2個序列的頭節點
* 然後預留出乙個2個序列之和的新序列用來存放新的有序資料集,一次如此,直到最後整個序列有序
* * 解答思路:
* 將n個元素從中間切開,分成兩部分。(左邊可能比右邊多1個數)
* 將步驟1分成的兩部分,再分別進行遞迴分解。直到所有部分的元素個數都為1。
* 從最底層開始逐步合併兩個排好序的數列。
* * 記住,我們規定的是比較的2個陣列都是有序的,意味著當我們分治到每個陣列為1個元素時,便是有序的。然後進行歸併
* * 歸併的優勢,時間複雜度小,為nlogn ,但是空間複雜度大,也就意味著比較佔記憶體
* ** @date 2020-01-07
* @since
*/public class mergesorttest ;
int sort = mergesort(arr, 0, arr.length - 1);
for (int num : sort)
}private static int mergesort(int arr, int l, int r) ;
}// 獲取分段索引下標
int segment = l + (r - l) / 2;
// 左邊有序的陣列,這裡採用遞迴呼叫就是為了分治到1個元素為止
int leftarr = mergesort(arr, l, segment);
// 右邊有序的陣列
int rightarr = mergesort(arr, segment + 1, r);
// 那麼如何保證有序呢?,因為我們分治的元素歸併後都保持有序,所以直接進行比較交換即可
// 採用雙指標來完成
int newarr = new int[leftarr.length + rightarr.length];
int k = 0;
int i = 0;
int j = 0;
// 歸併
while (i < leftarr.length && j < rightarr.length)
// 如果leftarr未排完,則直接插入到最後
while (i < leftarr.length)
while (j < rightarr.length)
return newarr;
}// public static int mergesort(int nums, int l, int h) ;
//// int mid = l + (h - l) / 2;
// int leftarr = mergesort(nums, l, mid); //左有序陣列
// int rightarr = mergesort(nums, mid + 1, h); //右有序陣列
// int newnum = new int[leftarr.length + rightarr.length]; //新有序陣列
//// int m = 0, i = 0, j = 0;
// while (i < leftarr.length && j < rightarr.length)
// while (i < leftarr.length)
// newnum[m++] = leftarr[i++];
// while (j < rightarr.length)
// newnum[m++] = rightarr[j++];
// return newnum;
// }
// public static void main(string args) ;
// int newnums = mergesort(nums, 0, nums.length - 1);
// for (int x : newnums)
// }
}
2020 06 07記錄一下
軟體測試技術型方向 自動化測試工程師,效能測試工程師,安全測試工程師等專項技術方發展 初級軟體測試人員專業知識 1 軟體功能測試技術,體現在用例設計和缺陷設計兩方面。主要包括軟體需求規格說明書的評審 測試計畫 測試用例設計技術 環境搭建 測試執行 缺陷提交 回歸測試 測試報告等。2 web自動化測試...
記錄一下進展
最近倆周都在除錯caffe的windows和matlab聯合使用,真的是超級鬱悶的一段時間。caffe編譯通過,但是目前有些不能用,當使用image data時,prototxt檔案解析失敗,我也不知道到底怎麼回事。另外乙個,在matlab呼叫caffe的mex檔案時,總是在初始化就失敗了。具體原因...
懷念一下歸併 逆序對
codevs 4163 神犇與逆序對 include define ll long long define maxn 1000010 using namespace std ll n,a maxn b maxn ans ll init returnx void merge sort ll l,ll ...