자바의정석

배열 크기 순 정렬 / 버블정렬 알고리즘

유호야 2021. 5. 2. 00:28
반응형

배열의 요소 값들의 크기를 비교해서 작은 순에서 큰 순으로 나열하는 버블정렬 알고리즘이다.

어려웠던 부분은 for문 안의 for문에 있는 " arr.length-1-i ", 이 배열의 -i 부분이었다. 

-i 부분이 되어야 하는 이유는, 한 번 for문을 돌렸을 때 결국 가장 큰 숫자는 맨 뒤로 밀려나기 때문이다. 그 수는 마지막 배열에 고정이 될 것이고, 우리는 굳이 그 숫자를 다른 것들과 비교할 필요가 없기 때문에

처음에 비교해야 할 숫자들이 

1, 2, 3, 4, 5 일 때
12 23 34 45 를 비교하겠지만
두 번째로 비교할 때는 
12 23 34 만 비교해도 된다. 
따라서 세 번쨰는 12 23 만 비교하기 때문에
arr.length-1-i 이라는 숫자가 나온다는 것,
책에 버블 정렬 알고리즘이라고 소개되어 있길래 혼자 풀어보고 글을 작성한다.

public class Test {

	public static void main(String[] args) {
		//버블정렬하기
		
		int[] arr = new int[10];
		System.out.println("정렬전 ㄱ");
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] = (int)(Math.random()*10));
		}
		
		for(int i = 0; i < arr.length-1; i++) {
			boolean check = false;
			for(int j = 0; j < arr.length-1-i; j++) {
				if(arr[j] > arr[j+1]) {
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
					check = true;
				}
			}
			if(check == false) break;
		}
		
		System.out.println("정렬후 ㄱ");
		for(int i = 0; i < arr.length; i++) {
			if(i!=arr.length-1)
				System.out.print(arr[i] + ",");
			else 
				System.out.println(arr[i]);
		}
	}
}

 

 

반응형

'자바의정석' 카테고리의 다른 글

[자바의정석] 참조변수란?  (0) 2021.06.25
[자바의정석] 가변인자(varargs)  (0) 2021.06.25
System.getProperty()  (0) 2021.04.21
@SuppressWarning  (0) 2021.04.16
lastIndexOf  (0) 2021.04.12