diff options
Diffstat (limited to 'algo1w2/bubble.c')
-rw-r--r-- | algo1w2/bubble.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/algo1w2/bubble.c b/algo1w2/bubble.c new file mode 100644 index 0000000..43890fd --- /dev/null +++ b/algo1w2/bubble.c @@ -0,0 +1,28 @@ +#include "main.h" +#include "bubble.h" + +void bubble_sort(int* arr, unsigned size) { + // index array (stabiliteit) + // int* indices = malloc(size * sizeof(int)); + // for (unsigned i = 0; i < size; i++) indices[i] = i; + + int outer, inner; + bool sorted; + for (outer = 0; outer < size - 2; outer++) { + sorted = true; // check if array was modified during inner loop + for (inner = size - 2; inner >= outer; inner--) { + if (arr[inner] >= arr[inner+1]) { + swap(arr[inner], arr[inner+1]); + // swap(indices[inner], indices[inner+1]); // swap indices array (stabiliteit) + sorted = false; + } + } + printf("outer %d: ", outer); + print_arr(arr, size); + // print index array (stabiliteit) + // printf("index %d: ", outer); + // print_arr(indices, size); + if (sorted) break; // break if nothing changed (already sorted) + } +} + |