From 205ea77a2215a7e83b49bf159c9797fac6ba5097 Mon Sep 17 00:00:00 2001 From: Baitinq Date: Sat, 10 May 2025 16:00:36 +0200 Subject: Examples: Add example sorting array --- examples/20.src | 1 - examples/21.src | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 examples/21.src (limited to 'examples') diff --git a/examples/20.src b/examples/20.src index aca7ea0..56c694e 100644 --- a/examples/20.src +++ b/examples/20.src @@ -11,7 +11,6 @@ let init_array = (n: i64, arr: *i64) => i64 { return 0; }; - let main = () => i64 { let n = 10; let arr = malloc(n * 8); diff --git a/examples/21.src b/examples/21.src new file mode 100644 index 0000000..62f3dda --- /dev/null +++ b/examples/21.src @@ -0,0 +1,77 @@ +extern printf = (*i64, varargs) => void; +extern rand = () => i64; +extern malloc = (i64) => *i64; +extern free = (*i64) => void; + +let init_array = (n: i64, arr: *i64) => i64 { + let i = 0; + while i < n { + (*(arr + i)) = rand(); + i = i + 1; + }; + return 0; +}; + +let print_array = (n: i64, arr: *i64) => i64 { + let i = 0; + while i < n { + printf("%d\n", *(arr + i)); + i = i + 1; + }; + return 0; +}; + +let sort_array = (n: i64, arr: *i64) => i64 { + let i = 0; + let j = 0; + + while i < n { + j = i + 1; + while j < n { + let x = *((arr + i)); + let y = *((arr + j)); + + if x > y { + let tmp = (*(arr + i)); + (*(arr + i)) = (*(arr + j)); + (*(arr + j)) = tmp; + }; + + j = j + 1; + }; + i = i + 1; + }; + + return 0; +}; + +let main = () => i64 { + let n = 10; + let arr = malloc(n * 8); + init_array(n, arr); + + printf("Pre-sorted:\n"); + print_array(n, arr); + + sort_array(n, arr); + + printf("Sorted:\n"); + print_array(n, arr); + + free(arr); + + return 0; +}; + +/* + +Expected stdout: + +Pre-sorted: +${UNSORTED_LIST} +Sorted: +${SORTED_LIST} + +Expected return: 0 + +*/ -- cgit 1.4.1