Add array insertion sort.

This commit is contained in:
iabdalkader 2017-07-11 23:48:49 +02:00
parent 4d409d57f3
commit aa2bd8a4e2
2 changed files with 16 additions and 0 deletions

View File

@ -158,3 +158,18 @@ void array_sort(array_t *array, array_comp_t comp)
quicksort(array->data, array->data + array->index - 1, comp);
}
}
void array_isort(array_t *array, array_comp_t comp)
{
if (array->index > 1) {
for (int i = 1; i < array->index; i++) {
int j = i-1;
void *t = array->data[i];
while (j >= 0 && comp(array->data[j], t)) {
array->data[j+1] = array->data[j];
j--;
}
array->data[j+1] = t;
}
}
}

View File

@ -31,4 +31,5 @@ void *array_take(array_t *array, int idx);
void array_erase(array_t *array, int idx);
void array_resize(array_t *array, int num);
void array_sort(array_t *array, array_comp_t comp);
void array_isort(array_t *array, array_comp_t comp);
#endif //__ARRAY_H__