CS153/hw4/hw4programs/count_sort.oat
jmug b24a264f7e Update hw4 to a newer version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 21:01:32 -08:00

59 lines
1.1 KiB
Text

int min(int[] arr, int len) {
var min = arr[0];
for (var i = 0; i < len; i = i + 1;) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
int max(int[] arr, int len) {
var max = arr[0];
for (var i = 0; i < len; i = i + 1;) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
int[] count_sort(int[] arr, int len) {
var min = min(arr, len);
var max = max(arr, len);
var counts = new int[max - min + 1];
for (var i = 0; i < len; i = i + 1;) {
counts[arr[i] - min] = counts[arr[i] - min] + 1;
}
var i = min;
var j = 0;
var out = new int[len];
while (i <= max) {
if (counts[i - min] > 0) {
out[j] = i;
counts[i - min] = counts[i - min] - 1;
j = j + 1;
} else {
i = i + 1;
}
}
return out;
}
int program(int argc, string[] argv) {
var arr = new int[]{65, 70, 72, 90, 65, 65, 69, 89, 67};
var len = 9;
print_string(string_of_array(arr));
print_string("\n");
var sorted = count_sort(arr, len);
print_string(string_of_array(sorted));
return 0;
}