Testing array implementation
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 17 Jul 2020 23:52:49 +0000 (18:52 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 17 Jul 2020 23:52:49 +0000 (18:52 -0500)
progs/arrays.onyx

index 0db8ba958f77cdcedc44ebfeb3419e8a9ad3b6d4..8665ef29721c9a324480bab89bab7d531bc222f2 100644 (file)
@@ -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);
 }