얼렁뚱땅 우왕좌왕
[JAVA] 버블정렬과 선택정렬 본문
■ 버블정렬
- for문 : 원본자료가 n개일때 n-1차 운행한다.
- 이중for문으로 각 회차에서 인접한 두 값을 비교
- 오름 차순인 경우 작은 값을 앞으로 이동
- 내림 차순인 경우 큰 값을 앞으로 이동
오름차순 예시)
- 반대의 경우 if문 부등호 방향만 변경해준당
for(int i=0; i<scores.length-1; i++) {
for(int j=0; j< scores.length-1; j++) {
//j = 0 : 77, 75, 43, 83,
//j = 1 ; 77, 75, 43, 83,
//j = 2 : 77, 75, 83, 43,
if(scores[j] < scores[j+1]) { //부등호만 바꾸면 오름차순!
int temp = scores[j];
scores[j] = scores[j+1];
scores[j+1] = temp;
}
}
}
//향상된 버블 정렬
for(int i=0; i<scores.length-1; i++) {
boolean end = true;
for(int j=0; j< scores.length-1; j++) {
if(scores[j] < scores[j+1]) { //부등호만 바꾸면 오름차순!
int temp = scores[j];
scores[j] = scores[j+1];
scores[j+1] = temp;
end = false;
}
}
if(end) break; //더 이상 정렬할 것이 없는 경우 > 작업종료
}
■ 선택정렬
- 순서대로 값을 비교하고 최대값이나 최소값을 갖고 있는 인덱스와 값을 변경
for(int i = 0; i < scores.length-1; i++){
int min = i;
for(int j = i; j < scores.length-1; j++){
if(scores[j] < scores[min]){
min = j; // 최소값을 가진 인덱스를 저장
}
}
// 저장한 인덱스 번호를 가져와서 정렬중인 인덱스 값과 변경한다
int temp = scores[min];
scores[min] = scores[i];
scores[i] = temp;
}
■ 메소드를 활용한 정렬
- Arrays.sort(lotto);
: 오름차순으로 정렬이 된다.
'JAVA' 카테고리의 다른 글
[JAVA] static, 싱글톤, final (0) | 2024.07.15 |
---|---|
[JAVA] String 함수 (0) | 2024.07.15 |
[JAVA] 배열 복사하는 방법 (0) | 2024.07.15 |
[JAVA] method와 stack, heap 영역 (0) | 2024.07.15 |
[JAVA] 변수 타입 (0) | 2024.07.15 |