Example #1
0
/**
 * 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]);
        }
    }
}
Example #2
0
// 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;
		}
	}
}