JAVA를 잡아라!...

JAVA_배열 알고리즘_정렬 알고리즘_버블 정렬 본문

JAVA/JAVA_디버깅표

JAVA_배열 알고리즘_정렬 알고리즘_버블 정렬

onivv 2023. 11. 27. 23:40

▶ 버블정렬이란?

    : 배열내의 두개의 인접한 Index를 비교해 더 큰 숫자를 뒤로보내 차곡차곡 쌓아 정렬하는 방

- 배열의 알고리즘 중 하나!

- 배우기 쉽지만 느림(성능이 안좋음)

- 버블정렬은 1회 수행시 가장 큰 값이 맨 뒤로 이동하는 로직!

- 큰 값들을 빠르게 찾아야할 때 --> 당장 빨리 큰 값을 찾아야할 때 활용

- 쉽기 때문에 정렬할 데이터가 소수일 때 유리

- 코드가 단순하며 추가 메모리가 필요하지 않음

 

ver1. 코드

package freefree;

public class Task02 {
	public static void main(String[] args) {
			
		//int[] ar = {3,2,5,1,4};
		int[] ar = new int[5];
		ar[0] = 3;
		ar[1] = 2;
		ar[2] = 5;       
		ar[3] = 1;
		ar[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++) {
				// temp : 임시 저장변수, 임시 변수
				// 변수값들을 서로 교환하려면 반드시 temp가 필요함!
				// temp,tmp 변수명이 발견된다면?
				// 아~교환하려나보다~ 예상가능함!
				if(ar[i]>ar[i+1]) {
					int temp = 0;
					temp = ar[i];
					ar[i] = ar[i+1];
					ar[i+1]=temp;
					flag = false;
				}
			}
			//1번 정렬을 마친상태 == 1회전 정렬이 끝났다.
			if(flag) {
				break;
			}
		}
		
		for (int i = 0; i < ar.length; i++) {
		    System.out.print(ar[i]+" ");
		}
		System.out.println();
	}
}

 

ver1. 디버깅표

 

ver2. 코드

package freefree;

public class Task02 {
	public static void main(String[] args) {
		
		int[] ar = new int[5];
		ar[0] = 3;
		ar[1] = 2;
		ar[2] = 5;       
		ar[3] = 1;
		ar[4] = 4;
        int n = ar.length;
        boolean flag = true;

        while (flag) {	//flag가 true일때만 반복, false이면 종료!
            flag = false;
            for (int i = 0; i < n - 1; i++) {
                if (ar[i] > ar[i + 1]) {
                    int temp = ar[i];
                    ar[i] = ar[i + 1];
                    ar[i + 1] = temp;
                    flag = true;	
                    //if문 안에 들어오면 flag가 true이기때문에 while문 반복
                }
            }
            n--;	//뒤쪽 정렬을 하나씩 차감해야되서 n을 -1씩줄여 for문 반복 줄이기
        }

        for (int i = 0; i < ar.length; i++) {
            System.out.print(ar[i] + " ");
        }
	}
}

 

ver2. 디버깅표