Aide à la mise en œuvre du sorting rapide

C’est ce que j’ai et ça ne marche pas. Impossible de comprendre pourquoi … Le problème est probablement lié à la fonction quick_sort.

#include  #include  void quick_sort(int * a, int l, int r); void swap(int * a, int i, int j); int main(void) { #define N 10 int a[N], i; for (i = 0; i < N; ++i) { a[i] = rand(); printf("%d\n", a[i]); } quick_sort(a, 0, N - 1); for (i = 0; i < N; ++i) printf("%d\n", a[i]); return 0; #undef N } void quick_sort(int * a, int l, int r) { int i, j; if (l < r) { swap(a, rand() % (r - l + 1), r); i = l; for (j = l; j < r; ++j) if (a[j] < a[r]) { swap(a, i, j); ++i; } swap(a, i, r); quick_sort(a, l, i - 1); quick_sort(a, i + 1, r); } } void swap(int * a, int i, int j) { int k; k = a[i]; a[i] = a[j]; a[j] = k; } 

Corrigez cette ligne: swap(a, rand() % (r - l + 1), r);

Devrait être: swap(a, l + rand() % (r - l + 1), r);