diff --git a/histo.c b/histo.c
index 3530bb861ccb0cf402251ffbdfe9ba0357c07e04..849bbde4f1a963e6f8e941d978370f63c9832365 100644
--- a/histo.c
+++ b/histo.c
@@ -31,7 +31,12 @@ int main() {
 
     // 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");
+    printf("Array after swapping the smallest value with the last one :\n");
+    print_array(array, array_size);
+
+    // Descending sort the array by using the insertion algorithm
+    sort_by_insertion_desc(array, array_size);
+    printf("Array after insertion desc sort :\n");
     print_array(array, array_size);
     
     // Swap the highest value of the array with the last element of the array
diff --git a/unidimensional_array.c b/unidimensional_array.c
index 3572bca265d59f621b3146cc32165c524409186d..dbf4bf801a10f3ce5bcd09a35c88fbcbca7a9ed1 100644
--- a/unidimensional_array.c
+++ b/unidimensional_array.c
@@ -84,6 +84,19 @@ void permute_lowest_value_with_last_value(int* array, size_t array_size) {
     swap(&array[lowest_index], &array[last_index]);
 }
 
+void sort_by_insertion_desc(int* array, size_t array_size) {
+    size_t i = 1;
+
+    while (i < array_size) {
+        size_t k = i;
+        while (k > 0 && array[k - 1] < array[k]) {
+            swap(&array[k], &array[k - 1]);
+            k -= 1;
+        }
+        i++;
+    }
+}
+
 int find_index_highest_value_in_array(int* array, size_t array_size) {
     int highest_value;
     size_t index_highest_value = 0;
diff --git a/unidimensional_array.h b/unidimensional_array.h
index eff8638797696fbbddbc7a7bf7865d9a1fca461e..0e6bb402b8da057f329a6253e2262ac25adeadc0 100644
--- a/unidimensional_array.h
+++ b/unidimensional_array.h
@@ -21,6 +21,8 @@ void shuffle_array(int* array, size_t array_size);
 
 void perform_cyclic_permutation(int* array, size_t array_size, size_t cycle_number);
 
+void sort_by_insertion_desc(int* array, size_t array_size);
+
 void print_array(int* array, size_t array_size);
 
 void swap(int *x, int *y);