2015-02-02 3 views
0
public int partition(int[]a,int i,int j){ 
    int x=a[i]; 
    int c=i; 
    for (int d = c+1; d < j; d++) { 
     if (a[d]<=x) { 
      c=c+1; 
      exchange(a, c, d); 
     } 

    } 
    exchange(a, c, i); 
    return c; 
} 
public void exchange(int[]a,int c,int d){ 
    int temp=a[c]; 
    a[c]=a[d]; 
    a[d]=temp; 
} 
public void sort(int[]a,int i,int j){ 
    int index; 
    if(i<j){ 
     index=partition(a, i, j); 
     sort(a, i, index-1); 
     sort(a,index+1, j); 
    } 
} 

**strong text**public static void main(String[] args) { 
    // TODO code application logic here 
    QUICKSORT abir=new QUICKSORT(); 
    abir.PRINT(abir.a); 
    abir.sort(abir.a, 0,10); 
    abir.PRINT(abir.a); 
} 

다음은 내 QuickSort 코드입니다. 내가 입력하면 [6 10 13 5 8 3 2 11] 은 [2 5 3 6 8 11 10 13]빠른 정렬 오류 java

사람이 무슨 잘못 내 코드로 설명 할 수 인쇄 ??? 감사합니다

+2

단계별 디버깅을 시도 했습니까? 코드에서 무슨 일이 일어나는지 정확히 알 수 있습니다. –

+0

시도해 보았습니다. 결과가 .... :( –

+1

"결과가 없음"을 의미하는 것입니까? 뭔가 인쇄 했으므로 분명히 결과가 나옵니다. – elefont

답변

0

코드가 매우 이상하게 보입니다. 어쨌든 빠른 정렬에 대한 설명을 보려면이 페이지를 살펴 보시지 않겠습니까? http://www.algolist.net/Algorithms/Sorting/Quicksort

int partition(int arr[], int left, int right) 
{ 
     int i = left, j = right; 
     int tmp; 
     int pivot = arr[(left + right)/2]; 

     while (i <= j) { 
      while (arr[i] < pivot) 
        i++; 
      while (arr[j] > pivot) 
        j--; 
      if (i <= j) { 
        tmp = arr[i]; 
        arr[i] = arr[j]; 
        arr[j] = tmp; 
        i++; 
        j--; 
      } 
     }; 

     return i; 
} 

void sort(int arr[], int left, int right) { 
     int index = partition(arr, left, right); 
     if (left < index - 1) 
      sort(arr, left, index - 1); 
     if (index < right) 
      sort(arr, index, right); 
} 

static int[] a = {6, 10, 13, 5, 8, 3, 2, 11}; 

public static void main(String[] args) { 
    // TODO code application logic here 
    QUICKSORT abir=new QUICKSORT(); 
    System.out.println(Arrays.toString(a)); 
    abir.sort(a, 0, 7); 
    System.out.println(Arrays.toString(a)); 
} 
+0

우선, 고맙습니다. 이 알고리즘은 승무원이 "알고리즘 소개"라는 책에서 얻습니다. –