//遞推公式
merge_sort
(p,r)
=merge
(merge_sort
(p,q)
,merge_sort
(q+1
,r))
//終止條件
p >= r
//10組測試資料
for(
let i =
0; i <
10; i++
)//生成10個隨機元素的測試陣列
function
gettestdata()
return ret
}//排序函式
function
merge_sort(a
)//遞迴函式
function
merge_sort_j(a
, p, r)
//合併兩個有序陣列
function
merge(a
, p, q, r)
i++}}
//使用新陣列的merge函式
function
merge_use_new_array(a
, p, q, r)
else
}//補上剩下的部分
if(i != q +1)
else
if(j != r +1)
//排序好的值回填
for(
let i = p; i < r +
1; i++
)}
//遞推公式:
quick_sort
(p,r)
=quick_sort
(p,q-1)
+quick_sort
(q+1
,r)//終止條件:
p >= r
//測試資料
let arr =[1
,82,22
,3,222,44
,55,6
,9,48
]//陣列list,下標p->r
function
partition
(list, p, r)
}exchangetwo
(list, j, r)
return j
}function
exchangetwo
(list, x, y)}//
function
quicksort
(arr, p, r)
quicksort
(arr,
0, arr.length -1)
console.
log(arr)
歸併排序和快速排序
歸併排序 先將問題分解為小問題即乙個個子序列,再將子串行按順序合併。class mergesort mergesort a,0 a.length 1 for int t a public static void mergesort int a,int m,int n public static vo...
歸併排序和快速排序
歸併排序的陣列排序任務可以如下完成 1 把前一半排序 2 把後一半排序 3 把兩半歸併到乙個新的有序陣列,然後再拷貝回原陣列,排序完成。include using namespace std void merge int a,int s,int m,int e,int tmp while p1 m ...
排序 歸併排序和快速排序
1,歸併排序的基本思想 1,將兩個或兩個以上的有序序列合併成乙個新的有序序列,比如有序序列 v 0 v m 和 v m 1 v n 1 合併為 v 0 v n 1 這種歸併方法稱為 2 路歸併 1,必須大於 1 個有序序列 2,必須有序 2,歸併的套路 1,將 3 個有序序列歸併為乙個新的有序序列,...