Tenta ordernar pagamentos
[cascardo/declara.git] / lib / list.c
index 8cba3f3..57d24ba 100644 (file)
@@ -128,3 +128,22 @@ int list_size(struct list *list)
 {
        return list->len;
 }
+
+/* Selection sort */
+int list_sort(struct list *l, sort_function_t *fn)
+{
+       int i, j;
+       for (i = 0; i < l->len; i++) {
+               int max = i;
+               void *tmp;
+               /* Find index of max value */
+               for (j = i; j < l->len; j++) {
+                       if (fn(l->items[j].val, l->items[max].val) < 0)
+                               max = j;
+               }
+               /* Swap items */
+               tmp = l->items[max].val;
+               l->items[max].val = l->items[i].val;
+               l->items[i].val = tmp;
+       }
+}