/** * Sortuje word_list. Złożoność pesymistyczna wynosi O(n^2 w), gdzie w to * długość najdłuższego słowa. Zastosowany jest algorytm sortowania przez * wstawianie. * @param [in,out] list Obiekt word_list do posortowania. Po zakończeniu, * lista ta będzie zawierała słowa uporządkowane rosnąco zgodnie z ustawionym * locale. Zbiór wartości się nie zmieni. */ static void sort(struct word_list * list) { for (size_t i = 0; i < word_list_size(list); i++) { for (size_t j = i + 1; j < word_list_size(list); j++) { if (!are_ordered(list->array[i], list->array[j])) swap((const void **) &list->array[i], (const void **) &list->array[j]); } } }
// Sorts the list according to the are_ordered operation of LData void insertion_sort(struct LList *list){ struct LNode *node_i = list->root; struct LNode *node_j; int i,j; for(i = 0; i < list->size-1; i++){ j = i; node_i = node_i->next; node_j = node_i; while(j < list->size && !are_ordered(node_i->data, node_j->data)){ j++; swap_elems(list, i, j); node_j = node_j->next; } } }