2014-10-23 5 views
-4

저는 지금 자바에서 배열을 버블 정렬하려고하고 있지만, 때때로 몇 가지를 수행 한 다음 배열 목록을 따릅니다.정렬 배열은 소수만 정렬합니다.

public void mysort() { 
    Random randomNumbers = new Random(); 

    int randomArray[] = new int[20]; 

    for (int j = 0; j <= 19; j++) { 
     randomArray[j] = randomNumbers.nextInt(200 + 1); 
     for (int k = 1; k < 20; k++) { 
      if (randomArray[k - 1] < randomArray[k]) { 
       int hjelp = randomArray[k - 1]; 
       randomArray[k - 1] = randomArray[k]; 
       randomArray[k] = hjelp; 
      } 
     } 
    } 
    for (int i = 0; i <= 19; i++) { 
     System.out.println(randomArray[i]); 
    } 
} 

버블 정렬이 제대로 작동하도록하려면 어떻게해야합니까?

+1

버블 정렬은 어디에 있습니까? –

+0

이 질문에는 실제 정렬 작업이 포함되어 있지 않습니다. –

+0

배열을 초기화하고 정렬 알고리즘을 20 번 실행하면 실제로 의도 한 것이 아니라고 확신합니다. – EpicPandaForce

답변

1

에 오름차순으로의 변화를 수행하려는 경우 먼저 배열을 채우는, 그리고 종류를 호출해야합니다. 배열이 20 번 "정렬"되고 있지만 여전히 불완전합니다.

public void mysort() { 
    Random randomNumbers = new Random(); 

    int randomArray[] = new int[20]; 

    for (int j = 0; j < randomArray.length; j++) { 
     randomArray[j] = randomNumbers.nextInt(200) + 1; 
    } 

    for (int i = 0; i < randomArray.length; i++) { 
     for (int k = 1; k < randomArray.length; k++) { 
      if (randomArray[k - 1] < randomArray[k]) { 
       int hjelp = randomArray[k - 1]; 
       randomArray[k - 1] = randomArray[k]; 
       randomArray[k] = hjelp; 
      } 
     } 
    } 

    for (int i = 0; i < randomArray.length; i++) { 
     System.out.println(randomArray[i]); 
    } 
} 
+0

와우 나는 버블 일종의 복잡한 도시 N을 보았습니다. 실제로 복잡한 N을 가진 어떤 종류도 보지 못했습니다. 코드를 해봤습니까? – StackFlowed

+0

@StackFlowed 나는 그에게 의심의 이익을주지 말았어야했다. 그것은 O (n^2) ... 맞아. – EpicPandaForce

+1

감사합니다. 이제 완벽하게 작동합니다. D – Jiberish

1

배열을 먼저 채워야합니다. 동시에 채우고 정렬하려고합니다.

채우

for (int j = 0; j <= 19; j++){ 
     randomArray[j] = randomNumbers.nextInt(200+1); 
} 

분류 :

BubleSort();

+0

버블 정렬 코드는 어디에 있습니까? –

1

당신의 코드는 다음과 있었어야 :

Random randomNumbers = new Random(); 
int randomArray[] = new int[20]; 
for (int j = 0; j <= 19; j++) { 
    randomArray[j] = randomNumbers.nextInt(200 + 1); 
} 
for(int j=0;j<20;j++) { 
    for (int k = 1; k < 20; k++) { 
     if (randomArray[k - 1] < randomArray[k]) { 
      int hjelp = randomArray[k - 1]; 
      randomArray[k - 1] = randomArray[k]; 
      randomArray[k] = hjelp; 
     } 
    } 
} 
for (int i = 0; i <= 19; i++) { 
    System.out.println(randomArray[i]); 
} 

참고하면 내림차순으로이 일을하고 있습니다. 당신이

if (randomArray[k - 1] < randomArray[k]) 

if (randomArray[k - 1] > randomArray[k])