From 4dc6ea86faadba210e7424e514b6178aed482cbc Mon Sep 17 00:00:00 2001 From: Dario Genga <dario.genga@etu.hesge.ch> Date: Mon, 15 Nov 2021 19:45:38 +0100 Subject: [PATCH] Add permutation values between small and last The program can permute the smallest value in the array with the last one. --- histo.c | 7 ++++--- unidimensional_array.c | 13 +++++++++++-- unidimensional_array.h | 4 +++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/histo.c b/histo.c index 0a07188..3530bb8 100644 --- a/histo.c +++ b/histo.c @@ -29,9 +29,10 @@ int main() { printf("Array after cyclic permutation :\n"); print_array(array, array_size); - // Find the lowest value in the array - int lowest_value = find_lowest_value_in_array(array, array_size); - printf("Lowest value : %d\n", lowest_value); + // Permute smallest value with the last value + permute_lowest_value_with_last_value(array, array_size); + printf("Array after swapping the smallest value with the last one\n"); + print_array(array, array_size); // Swap the highest value of the array with the last element of the array size_t index_highest_value = find_index_highest_value_in_array(array, array_size); diff --git a/unidimensional_array.c b/unidimensional_array.c index df35b64..3572bca 100644 --- a/unidimensional_array.c +++ b/unidimensional_array.c @@ -62,17 +62,26 @@ void print_array(int* array, size_t array_size) { printf("]\n"); } -int find_lowest_value_in_array(int* array, size_t array_size) { +int find_lowest_value_index_in_array(int* array, size_t array_size) { int lowest_value; + size_t lowest_index; for (size_t i = 0; i < array_size; i++) { if (i == 0) { lowest_value = array[i]; + lowest_index = i; } else if (array[i] < lowest_value) { lowest_value = array[i]; + lowest_index = i; } } - return lowest_value; + return lowest_index; +} + +void permute_lowest_value_with_last_value(int* array, size_t array_size) { + int lowest_index = (int)find_lowest_value_index_in_array(array, array_size); + int last_index = array_size - 1; + swap(&array[lowest_index], &array[last_index]); } int find_index_highest_value_in_array(int* array, size_t array_size) { diff --git a/unidimensional_array.h b/unidimensional_array.h index 0dcc53f..eff8638 100644 --- a/unidimensional_array.h +++ b/unidimensional_array.h @@ -11,10 +11,12 @@ size_t ask_array_size(); void fill_array_with_random_values(int* array, size_t array_size); -int find_lowest_value_in_array(int* array, size_t array_size); +int find_lowest_value_index_in_array(int* array, size_t array_size); int find_index_highest_value_in_array(int* array, size_t array_size); +void permute_lowest_value_with_last_value(int* array, size_t array_size); + void shuffle_array(int* array, size_t array_size); void perform_cyclic_permutation(int* array, size_t array_size, size_t cycle_number); -- GitLab