From: Brendan Hansen Date: Fri, 17 Jul 2020 23:52:49 +0000 (-0500) Subject: Testing array implementation X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=e08a20fe62a301ea96182c6bdedf7444e4b27d29;p=onyx.git Testing array implementation --- diff --git a/progs/arrays.onyx b/progs/arrays.onyx index 0db8ba95..8665ef29 100644 --- a/progs/arrays.onyx +++ b/progs/arrays.onyx @@ -1,23 +1,49 @@ use "progs/intrinsics" use "progs/print_funcs" -main :: proc #export { - print_i32(memory_size()); +// NOTE: in-place insertion sort +sort :: proc (src: ^i32, len: i32) { + i := 0; + while i < len { + smallest := i; - arr := 0 as ^i64; + j := i + 1; + while j < len { + if src[j] < src[smallest] smallest = j; + j += 1; + } - arr[0] = 10 as i64; - arr[1] = 20 as i64; - arr[2] = 30 as i64; - arr[3] = 40 as i64; + tmp :: src[smallest]; + src[smallest] = src[i]; + src[i] = tmp; + + i += 1; + } +} +print_i32arr :: proc (arr: ^i32, len: i32) { i := 0; - while i < 4 { - arr[i] += 1 as i64; - arr[i] *= 2 as i64; + while i < len { + print_i32(arr[i]); + i += 1; + } +} + +main :: proc #export { + arr := 0 as ^i32; + len :: 10; - print_i64(arr[i]); + i := 0; + while i < len { + arr[i] = (len - i) * 10; i += 1; } + + print_i32arr(arr, len); + + sort(arr, len); + + print_i32(1234567); + print_i32arr(arr, len); }