재밌고 어려운 IT를 이해해보자~!

버블정렬 코드 개선 본문

코리아IT핀테크과정

버블정렬 코드 개선

언제나즐거운IT 2023. 11. 27. 15:12

오늘은 같은 수강생분이 버블정렬을 코드와 함께 잘 소개해 주셨다!!!

발표내용과 강사님이 알려주신 피드백을 참고해서 더 좋은 코드를 만들어보자!!...뭐가있을까?

 

기존코드

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