Bubble Sort

Hi_na·2022년 12월 5일
0

Java

목록 보기
6/11
post-thumbnail

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

❓Question

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

0개의 댓글