Java 거품을 정렬하지 확인하는 마지막을 통해 루프

0

질문

내가 노력하고 있을 정렬 ArrayList 지에서 벽에 부딪습니다. 아래 나는 getId()함수를 검색하는 id 의 멤버입니다. 하고 싶을 정렬 ArrayList 에 의해 회원의 id 입니다. 전 검사는 단점이 좋은 기사이 구현되는 다음과 같다:

e.g(하기 전에 정렬) 11 22 33 44 55 66 77 88 99 00

e.g 후(정렬) 00 11 22 33 44 55 66 77 88 99

Member temp;

for (int i = 0; i < members.size(); i++) {
    Member s = members.get(i);
    System.out.println("S: "+s.getId());
            
    for (int j=0; j < members.size()-1; j++) {
        Member t = members.get(j+1);
        System.out.println("T: "+t.getId());
                
        if (s.getId() > t.getId()) {
        temp = s;
        s = t;
        t = temp;
        }
     }
  }
}

나는 인쇄물을 위의 문장을 추적하는 근본 원인을 하지만 여전히 노력하고 그에 오류가 있습니다.

bubble-sort java
2021-11-24 04:07:41
1

최고의 응답

2

코드 교환이 잘못된:

if (s.getId() > t.getId()) {
   temp = s;
   s = t;
   t = temp;
}

여기에서 당신은 스왑 st지만,데이터 기본 members 영향을 받지 않습니다. 올바른 하나:

for (int i = 0; i < members.size() - 1; i++) {
     for (int j = 0; j < members.size() - i - 1; j++) {
         Member s = members.get(j);
         Member t = members.get(j+1);
         if (s.getId() > t.getId()) {
             Collections.swap(members, j, j+1);
         }
    }
}
2021-11-24 04:35:16

감사에 대한 포인터입니다. 내가 나를 생각하고 있다. 내가 사용하 s=학생입니다.세트(i,t);및 그것의 보이 업데이트를 잘 그러나 조건은 그것이 업데이트하는 모든 값을 1010 대신 합니다.
Enthu

아는 우리가 사용할 수 있습니다.스왑은 내가 인식하지 못합니다. 설명할 수 있습니 조금 더에 회원에게 있습니다.size()-1 회원입니다.size()-나-1. 지 조건과 같이 게시 또는 나는 없는가?
Enthu

@Enthu 로 나는 두려워 당신은 몇 가지 오해에 대해 bubble sort. 비교 및 스왑 일어나 사이에 인접한 요소입니다.
chenzhongpu

감사@chenzhongpu. 나는 더 많이 읽을 것이다. 당신을 순전히 감사원! 그것은 정말 도움이되었습니다.
Enthu

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................