diff --git a/histo.c b/histo.c index 0a07188ac47e3acfdbc93846520c7f90f7600cf8..3530bb861ccb0cf402251ffbdfe9ba0357c07e04 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 df35b64ca38210a4dc9b6a3c01842ec9b9cc320c..3572bca265d59f621b3146cc32165c524409186d 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 0dcc53fb96b40795d3fc02165db2486926ca2a3a..eff8638797696fbbddbc7a7bf7865d9a1fca461e 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);