CS153/hw6/hw4programs/sp22_tests/pancake_sort.oat

52 lines
1 KiB
Text
Raw Permalink Normal View History

void flip(int[] arr, int n) {
var top = 0;
var bottom = n - 1;
while (top < bottom) {
var top_val = arr[top];
arr[top] = arr[bottom];
arr[bottom] = top_val;
top = top + 1;
bottom = bottom - 1;
}
return;
}
int get_max_index(int[] arr, int n) {
var max_index = 0;
var max = 0;
for (var i = 0; i < n; i = i + 1;) {
if (arr[i] > max) {
max = arr[i];
max_index = i;
}
}
return max_index;
}
void pancake_sort(int[] arr, int len) {
var n = len;
while (n > 1) {
var max_index = get_max_index(arr, n);
flip(arr, max_index + 1);
flip(arr, n);
n = n - 1;
}
return;
}
int program(int argc, string[] argv) {
var arr = new int[]{111, 73, 18, 139, 64, 193, 212, 97, 4, 87, 46, 201, 27, 117, 82, 9, 258, 2, 65, 152};
pancake_sort(arr, 20);
for (var i = 0; i < 20; i = i + 1;) {
print_int(arr[i]);
print_string(" ");
}
return 0;
}