diff options
| author | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:07:58 +0200 |
|---|---|---|
| committer | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:07:58 +0200 |
| commit | 967be9e750221ab2ab783f95df79bb26d290a45e (patch) | |
| tree | 6802900a5e975f9f68b169f0f503f040056d6952 /tigrou/sort | |
Diffstat (limited to 'tigrou/sort')
| -rw-r--r-- | tigrou/sort/sort.tig | 58 | ||||
| -rw-r--r-- | tigrou/sort/sort.tih | 24 |
2 files changed, 82 insertions, 0 deletions
diff --git a/tigrou/sort/sort.tig b/tigrou/sort/sort.tig new file mode 100644 index 0000000..e2679ce --- /dev/null +++ b/tigrou/sort/sort.tig @@ -0,0 +1,58 @@ +let + import "sort.tih" + var array_1 := int_array[5] of 0 + var array_2 := int_array[4] of 0 + var array_3 := int_array[4] of 0 + + var array_1_sorted := int_array[5] of 0 + var array_2_sorted := int_array[4] of 0 + var array_3_sorted := int_array[4] of 0 + +in + array_1[0] := -14; array_1_sorted[0] := -18; + array_1[1] := 16; array_1_sorted[1] := -14; + array_1[2] := -10; array_1_sorted[2] := -10; + array_1[3] := 12; array_1_sorted[3] := 12; + array_1[4] := -18; array_1_sorted[4] := 16; + + array_2[0] := 21; array_2_sorted[0] := 21; + array_2[1] := 22; array_2_sorted[1] := 22; + array_2[2] := 23; array_2_sorted[2] := 23; + array_2[3] := 24; array_2_sorted[3] := 24; + + array_3[0] := 39; array_3_sorted[0] := 36; + array_3[1] := 38; array_3_sorted[1] := 37; + array_3[2] := 37; array_3_sorted[2] := 38; + array_3[3] := 36; array_3_sorted[3] := 39; + + let + function test_sort(arr: int_array, size: int, expected: int_array) = + let + function print_array(arr: int_array) = + ( + print("[ "); + for i := 0 to size - 1 do + ( + print_int(arr[i]); + print(" ") + ); + print("]") + ) + in + print("Sorting array "); + print_array(arr); + + sort(arr, size); + + print("\nExpected : "); + print_array(expected); + print("\ngot : "); + print_array(arr); + print("\n\n") + end + in + test_sort(array_1, 5, array_1_sorted); + test_sort(array_2, 4, array_2_sorted); + test_sort(array_3, 4, array_3_sorted) + end +end diff --git a/tigrou/sort/sort.tih b/tigrou/sort/sort.tih new file mode 100644 index 0000000..c601fe3 --- /dev/null +++ b/tigrou/sort/sort.tih @@ -0,0 +1,24 @@ +type int_array = array of int +function sort(a : int_array, size : int) = + if size > 0 then + ( + let var swapped := 0 + in + for i := 0 to size do + ( + swapped := 0; + (for j := 1 to size - i - 1 do + if a[j - 1] > a[j] then + ( + (let var tmp := a[j - 1] + in + a[j - 1] := a[j]; + a[j] := tmp + end); + swapped := 1 + )); + if swapped = 0 then + break + ) + end + ) |
