(Q) 버블 정렬 (Bubble sort)
다음 규칙에 따라 정렬을 구현하세요.
30, 10, 20, 50, 40을 저장할 배열을 만듭니다.
배열의 위치를 변경하여 10, 20, 30, 40, 50 순으로 저장될 수 있도록 만든 뒤 출력합니다
** 다음 사이트를 참고하여 구현하세요
1. 상단 메뉴에서 정렬 방식을 `BUB`(버블 정렬, BUBBLE SORT)로 지정합니다
2. 하단 `Create(A)` 버튼을 눌러 데이터 입력란에 `30, 10, 20, 50, 40`을 입력하고 Go를 누릅니다
3. 하단 `Sort` 버튼을 누르면 정렬되는 과정을 시각적으로 확인할 수 있습니다
https://visualgo.net/en/sorting
Sorting (Bubble, Selection, Insertion, Merge, Quick, Counting, Radix) - VisuAlgo
VisuAlgo is free of charge for Computer Science community on earth. If you like VisuAlgo, the only "payment" that we ask of you is for you to tell the existence of VisuAlgo to other Computer Science students/instructors that you know =) via Facebook/Twitte
visualgo.net
package day07;
public class Day07_array_Test13 {
public static void main(String[] args) {
// 배열의 생성
int[] array = new int[] {30, 10, 20, 50, 40};
//정렬 전 출력
for(int i = 0 ; i < array.length ; i ++) {
System.out.print(array[i] + " ");
}
System.out.println();
// 버블 정렬
for(int times = 0 ; times < array.length - 1 ; times ++) {
for(int nowIndex = 0 ; nowIndex < (array.length - 1) - times ; nowIndex ++) {
int backup;
if(array[nowIndex] > array[nowIndex + 1]) {
backup = array[nowIndex];
array[nowIndex] = array[nowIndex + 1];
array[nowIndex + 1] = backup;
}
}
}
//정렬 후 출력
for(int i = 0 ; i < array.length ; i ++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
}
변수
- times : 첫 번째 값부터 (array.length - 1) - j 번째 까지의 비교를 1회라 할 때 특정 회차
- nowIndex : 특정 회차에서 배열의 i번째와 (i+1)번째 값의 비교를 위한 i번째 인덱스
** 버블 정렬 (Bubble Sort)
1) 배열의 첫 번째 위치부터 진행하며 i번째와 (i+1)번째 값을 비교하여 큰 값이 오른쪽에 배치되도록 데이터 교체 (swap)
2) 오른쪽 끝까지 비교와 교체를 완료하면 오른쪽 끝에는 가장 큰 값이 위치하게 된다
3) 다시 첫 번째 위치부터 비교와 교체를 진행하지만 오른쪽 끝 값은 비교 대상에서 제외한다
4) 이 과정을 반복한다
'국비교육 > 국비교육 복습' 카테고리의 다른 글
| Day08_array2d_Test03 : 2차원 배열 생성 (0) | 2022.08.07 |
|---|---|
| Day08_array_Test14 : 삽입 정렬 (★★★) (0) | 2022.08.07 |
| Day07_array_Test12 : 선택 정렬 (★★) (0) | 2022.08.07 |
| Day07_array_Test11 : 배열 뒤집기 (★) (0) | 2022.08.07 |
| Day07_array_Test10 : 점심 메뉴 추천 (배열의 활용 + random) (0) | 2022.08.07 |