수업 중 다른 팀의 발표 주제가 버블 정렬이었다
발표용으로 제출된 코드를 내 기준에 맞게 리팩토링 해보자
발표용 코드
package class01;
public class Test01 {
public static void main(String[] args) {
int[] ar = {3,2,5,1,4};
int[] arr= new int[5];
arr[0]=3;
arr[1]=2;
arr[2]=5;
arr[3]=1;
arr[4]=4;
// 정렬을 몇번할지 결정하는 반복문
// 배열의 요소개수만큼 수행하겠다! == 5번 정렬하겠다!
for (int j = 0; j < ar.length; j++) {
boolean flag = true;
// 배열을 1회 정렬할때 사용되는 반복문
for (int i = 0; i < ar.length-1-j; i++) {
// 임시 저장변수, 임시 변수
// 변수값들을 서로 교환하려면 반드시 tmp가 필요함!
// tmp,temp 변수명이 발견된다면?
// 아~ 교환하려나보다~~ 예상가능함
if(ar[i]>ar[i+1]) {
int temp = ar[i];
ar[i] = ar[i+1];
ar[i+1]=temp;
flag = false;
}
}
// 1번 정렬을 마친상태 == 1회전 정렬이 끝났다.
if(flag) {
break;
}
for (int p = 0; p < ar.length; p++) {
System.out.print(ar[p]+" ");
}
System.out.println();
}
}
}
수정한 코드
수정 이유는 주석으로 작성
package class01;
public class Test01 {
public static void main(String[] args) {
int[] ar = {3,2,5,1,4};
int tmp; // for문 밖에 선언해서 한 번만 선언하기
boolean flag;
for (int j = 0; j < ar.length - 1; j++) { // 효율을 위해 범위를 하나 줄이자
flag = true;
for (int i = 0; i < ar.length - 1 - j; i++) {
if (ar[i] > ar[i+1]) {
tmp = ar[i];
ar[i] = ar[i+1];
ar[i+1] = tmp;
flag = false;
}
}
if (flag) {
break;
}
for (int p = 0; p < ar.length; p++) {
System.out.print(ar[p] + " ");
}
System.out.println();
}
}
}
'-- 기타 -- > IT KOREA 국비 지원 강의' 카테고리의 다른 글
[알고리즘] 선택 정렬 코드 및 불안정 정렬 확인 (1) | 2023.11.29 |
---|---|
[알고리즘] 삽입 정렬 코드 작성 (0) | 2023.11.28 |
[이클립스] Open Associated Perspective 안내창 (0) | 2023.11.27 |
[알고리즘] 이진 탐색 (0) | 2023.11.24 |
[알고리즘] 최대값 찾기 알고리즘과 디버깅 표 (2) | 2023.11.23 |