Bubble Sort
🧐버블 정렬?
버블 정렬은 기본적으로 배열의 두 수를 선택한 뒤, 만약 그 두 수가 정렬되었다면 놔두고 아니라면 두 수를 바꾸는 방식으로 진행된다.
오름차순으로 정렬할 때는 a<b, 내림차순이라면 a>b여야 정렬된 것으로 판단한다. 이를 배열의 처음부터 끝까지 반복한다.
🔍오름차순으로 배열 나열하기
int[] arr = { 13, 6, 8, 19, 23, 41, 23, 19, 4, 7, 3 };
✏️Solution 1
int[] arr = { 13, 6, 8, 19, 23, 41, 23, 19, 4, 7, 3 };
int i;
int j;
int k;
for(i=0; i<arr.length; i++) {
for(j=0; j<arr.length-i-1; j++) {
if(arr[j] > arr[j+1]) {
k = arr[j]; // k = 13
arr[j] = arr[j+1]; // arr[j] = 6
arr[j+1] = k; // arr[j+1] = 13
} // if
}
} // for
System.out.println(Arrays.toString(arr));
} // main
for(j=0; j<arr.length-i-1; j++)
for문에서 -1을 한 이유는?
=> 위의 과정이 1번 처리되면, 제일 큰 수가 배열 마지막에 위치하게 되고 다음 과정부터는 마지막요소를 처리할 필요가 없어지기 때문에 1자리를 더 빼줘야한다!
✏️Solution 2 (임의의 변수없이 하는 방법)
int[] arr = { 13, 6, 8, 19, 23, 41, 23, 19, 4, 7, 3 };
int i;
int j;
for(i=0; i<arr.length; i++) {
for(j=0; j<(arr.length-i)-1; j++) {
if(arr[j] > arr[j+1]) {
arr[j] = arr[j] + arr[j+1];
arr[j+1] = arr[j] - arr[j+1];
arr[j] = arr[j] - arr[j+1];
} // if
}
} // for
System.out.println(Arrays.toString(arr));
} // main
📌임의의 변수없이 배열 나열하기
int x;
int y;
x = x + y;
y = x - y;
x = x - y;
<참고 링크>
https://ko.wikipedia.org/wiki/%EB%B2%84%EB%B8%94_%EC%A0%95%EB%A0%AC