2012-01-21 2 views
1

자바 애플리케이션을 작성 중입니다.자바를 사용하여 함수 정렬하기

ArrayList<int[]> list = new ArrayList<int[]>(); 

    double[] array = new double[10]; 

배열 정렬을 기반으로 배열 및 정렬 목록을 정렬하는 함수를 작성했습니다. 하지만 내 기능이 제대로 작동하지 않습니다.

public void sort() { 
    int n = array.length; 
    for (int i = 1; i < n; i++) { 
     double m = array[i]; 
     int[] d = list.get(i); 
     int j = i - 1; 
     while ((j >= 0) && (array[j] > m)) 
     { 
      array[j+1] = array[j--]; 
      list.set(j+1, list.get(j--)); 
     } 
     array[j+1]=m; 
     list.set(j+1, d); 
    } 
} 

그것은 라인에 java.lang.ArrayIndexOutOfBoundsException이 있습니다

  list.set(j+1, list.get(j--)); 

가 어떻게 문제를 해결하고 배열의 종류에 따라 목록을 정렬 할 수 있습니다?

+0

코드에서이 행은 어디에 있습니까? choromosomes.set (j + 1, choromosomes.get (j--)); –

+0

오류가 발생한 줄이 게시 한 코드가 아닙니다. 그 코드를 보여줄 수 있습니까? –

+0

코드를 수정했습니다. –

답변

2

i==1j가 처음 array[0] > array[1] 가정 0

이며, 블록이 입력 된 경우, 이후 :

array[j+1] = array[j--]; 

j == -1, 색인 list에 사용할 수 있도록. 두 번째 감소도 의심스러워 보입니다. http://www.leepoint.net/notes-java/data/arrays/70sorting.html

기본적으로 당신이 java.util.Arrays 사용합니다 배열을 정렬하는 '정렬 방법 및 ArrayList를 위해 당신이 Collections의 사용합니다'정렬 방법 :

0

나는이 링크는 당신이 필요로하는 모든 것을 가지고 있다고 생각 .