Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGiuseppe Pisani Modificato 9 anni fa
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.