code wiki / (root) / nx_mergesort_test.nx

nx_mergesort_test.nx source

↩ module page · 40 lines · 1394 B

1import "nx_syscalls.nx" 2import "nx_mergesort.nx" 3 4func is_sorted_asc(arr: *i64, n: i64) -> i64 { 5 var i: i64 = 1 6 while i < n { 7 if arr[i - 1] > arr[i] { return 0 } 8 i = i + 1 9 } 10 return 1 11} 12 13func main() -> i64 { 14 let buf: *u8 = sys_mmap(80) 15 let arr: *nx_int = buf as *nx_int 16 17 arr[0] = 5; arr[1] = 1; arr[2] = 4; arr[3] = 2; arr[4] = 3 18 nx_mergesort(arr, 5) 19 if is_sorted_asc(arr, 5) != 1 { return __syscall(93, 1, 0, 0, 0, 0, 0) } 20 21 arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5 22 nx_mergesort(arr, 5) 23 if is_sorted_asc(arr, 5) != 1 { return __syscall(93, 2, 0, 0, 0, 0, 0) } 24 25 arr[0] = 5; arr[1] = 4; arr[2] = 3; arr[3] = 2; arr[4] = 1 26 nx_mergesort(arr, 5) 27 if is_sorted_asc(arr, 5) != 1 { return __syscall(93, 3, 0, 0, 0, 0, 0) } 28 29 arr[0] = 7; arr[1] = 7; arr[2] = 7; arr[3] = 7; arr[4] = 7 30 nx_mergesort(arr, 5) 31 if is_sorted_asc(arr, 5) != 1 { return __syscall(93, 4, 0, 0, 0, 0, 0) } 32 33 arr[0] = -3; arr[1] = 10; arr[2] = 0; arr[3] = 7; arr[4] = -100 34 arr[5] = 42; arr[6] = 1; arr[7] = 5; arr[8] = -1; arr[9] = 3 35 nx_mergesort(arr, 10) 36 if is_sorted_asc(arr, 10) != 1 { return __syscall(93, 5, 0, 0, 0, 0, 0) } 37 if arr[0] != -100 { return __syscall(93, 6, 0, 0, 0, 0, 0) } 38 if arr[9] != 42 { return __syscall(93, 7, 0, 0, 0, 0, 0) } 39 return 0 40}