Skip to content
Snippets Groups Projects
Commit f8c6ae50 authored by 20041679's avatar 20041679
Browse files

fix mergesort

parent 6a7040d3
No related branches found
No related tags found
No related merge requests found
...@@ -144,22 +144,22 @@ void playlist_sort(playlist_t playlist, playlist_sorting_criterion_t order_by) ...@@ -144,22 +144,22 @@ void playlist_sort(playlist_t playlist, playlist_sorting_criterion_t order_by)
* compar * compar
* ); * );
*/ */
// per l'ordinamento multi criterio può funzionare solo il merge sort perché
// è l'unico stabile tra i presenti
upo_merge_sort(
playlist->entries,
playlist->size,
sizeof(*(playlist->entries)),
compar
);
/* /*
* upo_merge_sort( * upo_quick_sort(
* playlist->entries, * playlist->entries,
* playlist->size, * playlist->size,
* sizeof(*(playlist->entries)), * sizeof(*(playlist->entries)),
* compar * compar
* ); * );
*/ */
// penso che per l'ordinamento multi criterio debba funzionare solo questo perché è l'unico
// stabile ma risultano alcune tracce messe dove non dovrebbero essere
upo_quick_sort(
playlist->entries,
playlist->size,
sizeof(*(playlist->entries)),
compar
);
} }
......
...@@ -84,7 +84,7 @@ static void upo_merge_sort_merge( ...@@ -84,7 +84,7 @@ static void upo_merge_sort_merge(
unsigned char *curr1 = (unsigned char *)base1 + i1 * size; unsigned char *curr1 = (unsigned char *)base1 + i1 * size;
unsigned char *curr2 = (unsigned char *)base2 + i2 * size; unsigned char *curr2 = (unsigned char *)base2 + i2 * size;
unsigned char *currtmp = tmp + (i1 + i2) * size; unsigned char *currtmp = tmp + (i1 + i2) * size;
if (cmp(curr1, curr2) < 0) { if (cmp(curr1, curr2) <= 0) {
memcpy(currtmp, curr1, size); memcpy(currtmp, curr1, size);
++i1; ++i1;
} else { } else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment