private static void mergeSortInternally(int[] arr, int left, int right){
if (left >= right) return;
//防止和超過int類型最大值
int mid = left + (right - left)/2;
mergeSortInternally(arr, left, mid);
mergeSortInternally(arr, mid+1, right);
merge(arr, left, mid, right);
}
private static void merge(int[] arr, int left, int mid, int right){
int i = left;
int j = mid + 1;
int k = 0;
int[] tmp = new int[right-left+1];// 申請一個大小跟a[p...r]一樣的臨時數(shù)組
while (i <= mid && j <= right){
if (arr[i] <= arr[j]){
tmp[k++] = arr[i++];
}else {
tmp[k++] = arr[j++];
}
}
int start = i;
int end = mid;
if (j <= right){
start = j;
end = right;
}
while (start <= end){
tmp[k++] = arr[start++];
}
for (i =0; i <= right - left; ++i){
arr[left+i] = tmp[i];
}
}
歸并排序
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- 選擇排序 對于任何輸入,時間為O(n*n); 冒泡排序 最優(yōu)(對于升序的數(shù)組,因為加入了一個跳出判斷):O(n),...
- [前言] 此文章參考自《數(shù)據(jù)結構(java版)》第三版,葉核亞 一、排序的基本概念: (1)性能評價:取決于時間復...
- 2017年已過去了10天,回望2016所制定的目標都實現(xiàn)了嗎? 如果沒有。 是什么原因? 是制定的不合理嗎? 還是...