재밌고 어려운 IT를 이해해보자~!
버블정렬 코드 개선 본문
오늘은 같은 수강생분이 버블정렬을 코드와 함께 잘 소개해 주셨다!!!
발표내용과 강사님이 알려주신 피드백을 참고해서 더 좋은 코드를 만들어보자!!...뭐가있을까?
기존코드
package class01;
public class Test01 {
public static void main(String[] args) {
int[] ar = {3,2,5,1,4};
for (int j = 0; j < ar.length; j++) {
boolean flag = true;
for (int i = 0; i < ar.length-1-j; i++) {
if(ar[i]>ar[i+1]) {
int temp = ar[i];
ar[i] = ar[i+1];
ar[i+1]=temp;
flag = false;
}
}
if(flag) {
break;
}
for (int p = 0; p < ar.length; p++) {
System.out.print(ar[p]+" ");
}
System.out.println();
}
}
}
디버깅 표
수정하면 좋다고 생각하는 부분
1. 디버깅 표를 살펴보자! 배열의 원소가 5개일때 j값은 0,1,2,3 까지 반복되고 종료된다!
5개의 요소를 하나하나 비교해서 가장 큰값을 오른쪽으로 옮기는 행위가 4번만 반복되면,
5개의 요소를 정렬할 수 있는 것이다.
따라서 외부 반복문의 j 반복조건문은 j < ar.length-1; 이면 버블정렬을 완료할 수 있다.
2. 또한 while문을 쓰는것이 아니기 때문에 반복을 끝까지 돌게하고 boolean타입변수와 break;문은 제거.
3. 배열 선언은 new연산자를 통해 객체로 선언해준다.
4. 배열 출력시에도 배열 정렬할때 쓴 변수 i를 재사용하자.
수정한 코드
package class01;
public class bubblesort {
public static void main(String[] args) {
int[] arr = new int[5];
arr[0] = 3;
arr[1] = 2;
arr[2] = 5;
arr[3] = 1;
arr[4] = 4;
for (int a = 0; a < arr.length - 1; a++) {
for (int i = 0; i < arr.length - 1 - a; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
'코리아IT핀테크과정' 카테고리의 다른 글
삽입정렬 코드 실행 (0) | 2023.11.28 |
---|---|
함수(Function) (0) | 2023.11.27 |
이진 탐색(Binary Search) (2) | 2023.11.26 |
학생부 프로그램 제작 (2) | 2023.11.25 |
배열(Array) (3) | 2023.11.23 |
Comments