버블 정렬

Seungmin Lim·2022년 2월 14일
0

코딩문제연습

목록 보기
49/63

문제

나의풀이

import java.util.*;
class Main {
	public int[] solution(int n,int[] arr) {
		for(int i=0; i<n-1;i++) {
			for(int j=0; j<n-i-1;j++) {
				if(arr[j] > arr[j+1]) {
					int tmp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = tmp;
				}
			}
		}
		return arr;
	}

		    
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n = kb.nextInt();
		int[] arr = new int[n];
		for(int i=0; i<n; i++) arr[i] = kb.nextInt();
		for(int x : T.solution(n,arr)) System.out.print(x + " ");
	}
	
}

풀이방법

i문을 통해 젤 n-1번만큼 for문이 돌고,(자료가5개라면 4바퀴)
j문을 통해 0~n-1, 0~n-2, 0~n-3 ... 계속돈다.
j문이 한바퀴 돌때마다 arr의 마지막값에는 arr에서 가장 큰 값이 담긴다.
그렇기때문에 다음바퀴를 돌때는 끝값이 1씩 줄어들어서 돌게된다.
j문이 n-1번돌고나면 배열이 전부 탐색되고 오름차순으로 정렬이된다.

핵심키워드

뭔가 sliding window와 비슷한거같으면서도 다르다.
계속 이웃한 값과 비교하면서 연쇄적으로 값을 정렬해서 버블정렬!
기억해두자!

0개의 댓글