71 lines
1.9 KiB
Plaintext
71 lines
1.9 KiB
Plaintext
alpha parser, version 0.2 (2023-03-04) - Annotated Source Code for file selectionSort.alpha
|
|
001: (* Type definitions *)
|
|
002:
|
|
003: type string2int: string -> integer
|
|
004: type intArray: 1 -> integer
|
|
005: type intArrayXinteger: [ intArray: data; integer: index ]
|
|
006: type intArrayXinteger2integer: intArrayXinteger -> integer
|
|
007: type intArray2Boolean: intArray -> Boolean
|
|
008:
|
|
009:
|
|
010: (* Function declarations
|
|
011: They use the above type definitions
|
|
012: *)
|
|
013: function indexOfSmallest: intArrayXinteger2integer
|
|
014: function selectionSort: intArray2Boolean
|
|
015: function entry : string2int
|
|
016:
|
|
017: (* indexOfSmallest *)
|
|
018: indexOfSmallest (* as *) (data, startingIndex) := {
|
|
019: [ integer: indexOfSmallestSoFar; integer: i ]
|
|
020: indexOfSmallestSoFar := startingIndex;
|
|
021: i := 0 ;
|
|
022: while (i < data._1 ) {
|
|
023: if ( data(i) < data(indexOfSmallestSoFar) )
|
|
024: then {
|
|
025: indexOfSmallestSoFar := i;
|
|
026: }
|
|
027: else {
|
|
028: i := i;
|
|
029: }
|
|
030: i := i + 1;
|
|
031: }
|
|
032: return indexOfSmallestSoFar;
|
|
033: }
|
|
034:
|
|
035:
|
|
036: (* selectionSort *)
|
|
037: selectionSort(data) := {
|
|
038: [ integer: i ]
|
|
039: i := 0 ;
|
|
040: while (i < data._1 ) {
|
|
041: [ integer: index; integer: temp ]
|
|
042: index := indexOfSmallest(data,i);
|
|
043: temp := data(index);
|
|
044: data(index) := data(i);
|
|
045: data(i) := temp;
|
|
046: i := i + 1;
|
|
047: }
|
|
048: return true;
|
|
049: }
|
|
050:
|
|
051:
|
|
052: (* Function definition
|
|
053: entry is the first function called
|
|
054: *)
|
|
055: entry(arg) := {
|
|
056: [ intArray: data; Boolean: _ ]
|
|
057: data := reserve data(8);
|
|
058: data(0) := 60;
|
|
059: data(1) := 80;
|
|
060: data(2) := 10;
|
|
061: data(3) := 50;
|
|
062: data(4) := 30;
|
|
063: data(5) := 40;
|
|
064: data(6) := 20;
|
|
065: data(7) := 70;
|
|
066: _ := selectionSort(data);
|
|
067: return 0;
|
|
068: }
|
|
069:
|