반응형
배열의 요소 값들의 크기를 비교해서 작은 순에서 큰 순으로 나열하는 버블정렬 알고리즘이다.
어려웠던 부분은 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 |