X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=TP_7_C%2Fexo1-base.c;fp=TP_7_C%2Fexo1-base.c;h=a30362c3652bb3627cee56c7ec7b04fb3cba36aa;hb=c2bc2b96a16dbea260d81c674abd5ac53687c273;hp=0000000000000000000000000000000000000000;hpb=e1b5a0c2efdaae55cb7ccb02126766c41b33afa4;p=TD_C.git diff --git a/TP_7_C/exo1-base.c b/TP_7_C/exo1-base.c new file mode 100644 index 0000000..a30362c --- /dev/null +++ b/TP_7_C/exo1-base.c @@ -0,0 +1,44 @@ +#include +#include + +void swap(int* v1, int* v2) { + int tempValue = *v1; + *v1 = *v2; + *v2 = tempValue; +} + +/** Display the array on standard output. */ +void displayArray(int* array, int count) { + for (int tabIndex = 0; tabIndex < count; ++tabIndex) { + printf("array[%d] = %d\n", tabIndex, array[tabIndex]); + } +} + +/** Perform one swap on the first two values not in increasing order. + * + * @return true if a swap was performed, false if the whole array is ordered. + */ +bool sortFirst(int* array, int length) { + for (int tabIndex = 0; tabIndex < (length - 1); ++tabIndex) { + if (array[tabIndex] > array[tabIndex + 1]) { + swap(&array[tabIndex], &array[tabIndex + 1]); + return true; + } + } + + return false; +} + +void sortArray(int* array, int length) { + bool swappedValues; + + do { + swappedValues = sortFirst(array, length); + } while (swappedValues); +} + +int main() { + int arr[10] = {23, 2, 0, 4, 56, 3, 7, 8, 98, 1}; + sortArray(arr, 10); + displayArray(arr, 10); +}