快速排序和歸併排序

2021-10-02 00:17:01 字數 1398 閱讀 2676

//遞推公式

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 個有序序列歸併為乙個新的有序序列,...