2014-04-21 2 views
-2

안녕 얘들 아 내 프로그램에 문제가있다. 클래스를 호출하고 주요 매개 변수에 숫자를 쓰거나 쓰면 숫자가 인쇄 될 수있는 양을 알려주고 가장 큰 숫자가되어야합니다. 문제는 그들이 동등하거나 약간의 네가티브 인 경우 적은 수의 난수를 인쇄 할 때 한 번만 표시되고 때로는 가장 큰 것이 아닌 것입니다. 확실하지 않으면 코드와 예제를 게시 할 것입니다.정렬 배열 java

for(a = 0; a < array.length; a++){ 
    for(b = 0; b < array.length-1; b++){ 
     if(array[b] > array[b+1]){ 
      aux = array[b]; 
      array[b] = array[b+1]; 
      array[b+1] = aux; 
     } 

나는이 코드를 사용하여 분류하지만 나는 괜찮은지 잘 모릅니다. ps : 정렬 방법이나 객체를 사용하는 간단한 논리는 없습니다.

+1

왜 정렬 알고리즘을 구현하지 않습니까? Mergesort 또는 Quicksort 같은가요? – tutak

+0

거품 경로와 다른 것들을 사용할 수 없습니다. –

+1

결과적으로 거품 정렬 http : //en.wikipedia를 사용하고 있습니다.org/wiki/Bubble_sort가 제대로 구현되지 않았습니다 –

답변

1

코드를 보면서 코드를 살펴보십시오.

가장 높은 순서에서 가장 낮은 순서로 정렬하려면 if (array [b] < 배열 [b + 1])가 있어야합니다. array [b]> array [b + 1]은 반대 방향으로, 가장 낮은 것부터 가장 큰 것을 수행합니다. 1, 2, 3, 5

제 1 내부 루프 :

b = 0 and array.length = 4 
array[b] = 1 and array[b+1] = 2 
1 is less than 2, so nothing changes 

둘째 내부 루프 :

내가 숫자의 배열을 말해봐 :

현재 코드는 않습니다

b = 1 and array.length = 4 
array[b] = 2 and array[b+1] = 3 
2 is less than 3, so nothing changes 

세 번째 내부 루프 :

b = 2 and array.length = 4 
array[b] = 3 and array[b+1] = 5 
3 is less than 5 so nothing changes 

등등. 이렇게하면 정렬이 잘못된 방식으로 진행되고 서명을 변경해야한다는 것을 분명하게 알 수 있습니다.

이제 이것을 버블 정렬로 올바르게 구현하려면 반복 할 때마다 마지막 요소를 정렬하지 않아야합니다. 이것은 당신이하고있는 것보다 더 나은 방법이 궁금하면 거품 정렬 위키 페이지를 읽어

for (int a = 0; a < thisArray.length(); a++){ 
     for (int b = 0; b < (thisArray.length() - a - 1); b++{ 
      if (thisArray[b] < thisArray[b+1]){ 
       holder = thisArray[b+1]; 
       thisArray[b+1] = thisArray[b]; 
       thisArray[b] = holder; 
      } 
     } 
} 

: 적절한 버블 정렬은 같을 것입니다. 그것의 요지는 가장 큰 숫자가 항상 뒤로 이동된다는 것입니다, 그래서 우리는 그것이 가장 큰 숫자인지 확인하기 위해 계속 볼 필요가 없습니다.

http://en.wikipedia.org/wiki/Bubble_sort

2

난 당신이 여기 저기 몇 괄호를 떠난 생각합니다.

우선 if(array[b] > array[b+1])은 가장 낮은 것부터 가장 높은 것 순으로 정렬됩니다. 최고에서 최저로 변경하려면 if(array[b] < array[b+1]으로 변경하십시오.

다음은 배열을 최고에서 최저로 정렬하는 코드입니다.

for(int a = 0; a < array.length; a++){ for(int b = 0; b < array.length-1; b++){ if(array[b] < array[b+1]){ aux = array[b]; array[b] = array[b+1]; array[b+1] = aux; } } }

이 방식에 의한 버블 정렬입니다.