La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Quick sort void quick_sort (int a[],int l, int r) { int i, j,v, t; if (r>l) { v=a[r];//L’elemento “pivot” è quello più a dx i=l-1; j=r; // i scorre da.

Presentazioni simili


Presentazione sul tema: "Quick sort void quick_sort (int a[],int l, int r) { int i, j,v, t; if (r>l) { v=a[r];//L’elemento “pivot” è quello più a dx i=l-1; j=r; // i scorre da."— Transcript della presentazione:

1 Quick sort void quick_sort (int a[],int l, int r) { int i, j,v, t; if (r>l) { v=a[r];//L’elemento “pivot” è quello più a dx i=l-1; j=r; // i scorre da sx a dx; j da dx a sx for (; ; ) { while ( a[++i]<v); while ( a[--j]>v); if (i>=j) break; t=a[i]; a[i]=a[j]; a[j]=t;//Scambia gli }//elementi i e j t=a[i]; a[i]=a[r]; a[r]=t;//Sistema l’elemento “pivot” quick_sort (a, l, i-1); quick_sort (a, i+1, r); }

2 1 73254 i temp j 1 l r pivot Quick sort 4 r > l a[i] < v v a[j] > v? NO i = > j ? NO! Scambio a[i] e a[j] 1 5 1 NO a[j] > v i = > j Scambio a[i] e a[r] 4 7 4

3 321 7 5 li-1 i+1 r quick_sort (a, l, i-1); quick_sort (a, i+1, r); chiamata ricorsiva

4 321 l r i j pivot 2 v r > l while ( a[++i]<v); while ( a[--j]>v); i = > j ? NO! Scambio a[i] e a[j] temp 1 31 i = > j ? SI! Scambio a[i] e a[r] 2 32

5 chiamata ricorsiva quick_sort (a, l, i-1); quick_sort (a, i+1, r); Valore uguale FINE Valore uguale FINE


Scaricare ppt "Quick sort void quick_sort (int a[],int l, int r) { int i, j,v, t; if (r>l) { v=a[r];//L’elemento “pivot” è quello più a dx i=l-1; j=r; // i scorre da."

Presentazioni simili


Annunci Google