Non capisco perchč questi algoritmi che ho scritto in passato non funzionino, praticamente ho un ArrayIndexOutOfBoundsException, ma non sono riuscito a capire perchč nel Quicksort non funzioni la procedura partition:
codice:public class QuickSort { public static void main(String [] args) { int [] a={5,4,6,7,8,0}; QSort(a,0,a.length-1); } public static void QSort(int [] A, int i, int r) { if(i>=r) return; else{ int n=partition(A,i,r); QSort(A,i,n); QSort(A,n+1,r); } } public static int partition(int [] A, int i, int r) { int a=i-1; int b=r+1; int p=A[r]; while(true) { b--; while(A[b]>p) b--; a=a+1; while(A[a]<p) a=a+1; if(a<b) swap(A, a, b); else return p; } } public static void swap(int [] A,int a, int b) { int tmp=A[a]; A[a]=A[b]; A[b]=tmp; } }

Rispondi quotando