2014-02-05 2 views
0

다음과 같은 숫자가 있습니다. 1,7,1,5와 그 사이에 간격없이 정렬하고 싶습니다. 즉, 1,7,1,5가 1,1,2,3로 정렬됩니다. (5는 2로, 7은 3으로 바뀝니다).빈칸없이 숫자 배열을 정렬하는 방법은 무엇입니까?

내 코드는이 (잘 작동)처럼 보이지만, 어떤 경우에 그런 널 포인터 전, 또는 뭔가를 반환 : 당신이 나를/

public void shake(Car[] c){ 
for(int i = 1; i < MaxPriority; i++) 
    if(!isCarWithPriority(i, c))   
     for(int j = i; j < 10; j++) 
     if(isCarWithPriority(j, c))  
      for(int k = 0; k < getCarsWithPriority(j, c).length; k++) 
       getCarsWithPriority(j, c)[k].setPriority(i); 
} 

도와 드릴까요?

+4

당신이 정말로 달성하려고 무엇을 할 것인가? 어쨌든 첫 번째 아이디어는 배열 (또는 목록)을 정렬 한 다음 '1'부터 모든 숫자를 갭이 아닌 것으로 바꾸기 시작하는 것입니다. 1,1,5,7 => 1,1,2,3. –

+0

나는 자동차와 같은 물건을 가지고있다. 이제 각 차량은 번호로 표시된 우선 순위를 갖습니다. 그들은 오름차순으로 1,1과 5, 7을 함께 의미합니다. GUI에서는 위치와 같은 순서를 보여줄 필요가 있습니다 - 어느 것이 첫째, 둘째인지 등등 :) – r3mus

답변

0

숫자를 정렬 한 후에 번호를 반복 해 볼 수 있습니다. 결과가 0이면 1을 2에서 뺀 다음 다른 것은하지 말고 2를 첫 번째 + 1로 바꾸고 세 번째를 두 번째와 같은 방식으로 비교하십시오. 마지막 숫자까지 계속하십시오. 원하는 출력을 얻을 수 있습니다. 이것은 java의 단일 루프에 의해 달성 될 수 있습니다.

0

이 트릭

public static void main(String[] a) { 
    Integer [] arr = {1,7,1,5}; 

    Arrays.sort(arr); 
    for (Integer integer : arr) { 
    System.out.println(integer); 
} 


for(int i=0; i< arr.length-1 ;i++){ 
    if(arr[i+1]-arr[i] ==0){ 
     continue; 
    }else{ 
     arr[i+1] =arr[i]+1; 
    } 
} 

System.out.println("--------------------"); 
for (Integer integer : arr) { 
    System.out.println(integer); 
} 

}

관련 문제