1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <commonlib/helpers.h> 4 #include <commonlib/sort.h> 5 6 /* Implement a simple Bubble sort algorithm. Reduce the needed number of 7 iterations by taking care of already sorted entries in the list. */ bubblesort(int * v,size_t num_entries,sort_order_t order)8void bubblesort(int *v, size_t num_entries, sort_order_t order) 9 { 10 size_t i, j; 11 int swapped; 12 13 /* Make sure there are at least two entries to sort. */ 14 if (num_entries < 2) 15 return; 16 17 for (j = 0; j < num_entries - 1; j++) { 18 swapped = 0; 19 for (i = 0; i < num_entries - j - 1; i++) { 20 switch (order) { 21 case NUM_ASCENDING: 22 if (v[i] > v[i + 1]) { 23 SWAP(v[i], v[i + 1]); 24 swapped = 1; 25 } 26 break; 27 case NUM_DESCENDING: 28 if (v[i] < v[i + 1]) { 29 SWAP(v[i], v[i + 1]); 30 swapped = 1; 31 } 32 break; 33 default: 34 return; 35 } 36 } 37 if (!swapped) 38 break; 39 } 40 } 41