From e08a20fe62a301ea96182c6bdedf7444e4b27d29 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 17 Jul 2020 18:52:49 -0500 Subject: [PATCH] Testing array implementation --- progs/arrays.onyx | 48 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 11 deletions(-) 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); } -- 2.25.1