Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let print_tab tab =
- for i = 0 to (Array.length tab) - 1 do
- print_int i;
- print_string " : ";
- print_int tab.(i);
- print_string "\t"
- done
- in
- let merge_sorting lt rt =
- let ll = Array.length lt in
- let lr = Array.length rt in
- let l = ll + lr in
- let ret = Array.make (l) 0 in
- let li = ref 0 in
- let ri = ref 0 in
- while (!li < ll && !ri < lr) do
- if (rt.(!ri) < lt.(!li)) then
- (
- ret.(!li + !ri) <- rt.(!ri);
- ri := !ri + 1
- )
- else
- (
- ret.(!li + !ri) <- lt.(!li);
- li := !li + 1
- )
- done;
- while (!li < ll) do
- ret.(!li + !ri) <- lt.(!li);
- li := !li + 1
- done;
- while (!ri < lr) do
- ret.(!ri + !li) <- rt.(!ri);
- ri := !ri + 1
- done;
- ret
- in
- let rec merge_sort tab =
- let l = Array.length tab in
- if (l < 2) then tab else
- (
- let hl = Array.sub tab 0 (l / 2) in
- let hr = Array.sub tab (l/2) (l - l/2) in
- let sl = merge_sort hl in
- let sr = merge_sort hr in
- merge_sorting sl sr
- )
- in
- print_tab (merge_sort [|2;3;6;4;1;79;4|]);;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement