728x90
버블 정렬이란, 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복하는 정렬 알고리즘을 뜻한다. 인접한 2가지 요소의 대소 관계를 검사하여 원하는 순서대로 되어 있지 않은 경우 교환을 하는 것이다. 오름차순, 내림차순으로 정렬할 수 있다.
public class BubbleSort {
public static void printArray(int[] a){
// for(int i = 0; i < a.length; i++){
// System.out.print("[" + a[i] + "]");
// }
for(int i: a){
System.out.print("["+i+"]");
}
System.out.print("\n");
}
public static void main(String[] args) {
int[] a = {95, 24, 68, 16, 53, 81};
// 정렬 전의 배열 내용을 표시
System.out.print("정렬 전 배열\n");
printArray(a);
System.out.print("\n");
int[] aa = arr(a);
// 정렬 후의 배열 내용 표시
System.out.print("정렬 후 배열(오름차순)\n");
printArray(aa);
int[] bb = brr(a);
// 정렬 후의 배열 내용 표시
System.out.print("정렬 후 배열(내림차순)\n");
printArray(bb);
}
private static int[] arr(int[] a) {
// 버블 정렬(오름차순)
int i, j, temp;
for (i = 0; i < a.length -1 ; i++) {
for (j = 0; j < a.length - i -1; j++) {
// 맨 뒤가 큰 수가 되도록 이동하고, 맨 뒷수를 하나씩 줄이기
System.out.printf("i=%d, j=%d :: ",i, j);
if (a[j] > a[j+1]) { // 배열 앞의 값이 더 크면
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
System.out.printf(
"j=%d, temp=%d, a[%d]=%d, a[%d]=%d",
j,temp, j, a[j], j+1, a[j+1]
);
}
System.out.print("\n");
printArray(a);
}
}
return a;
}
private static int[] brr(int[] a) {
// 버블 정렬(내림차순)
int i, j, temp;
for (i = 0; i < a.length -1 ; i++) {
for (j = 0; j < a.length - i -1; j++) {
// System.out.printf("i=%d, j=%d :: ",i, j);
if (a[j] < a[j+1]) { // 배열 앞의 값이 더 작으면
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
// System.out.printf(
// "j=%d, temp=%d, a[%d]=%d, a[%d]=%d",
// j,temp, j, a[j], j+1, a[j+1]
// );
}
// System.out.print("\n");
// printArray(a);
}
}
return a;
}
}
|
728x90
'안드로이드 > Java 알고리즘' 카테고리의 다른 글
Java 선택 정렬(Selection Sort) (0) | 2022.01.11 |
---|---|
Java 삽입정렬(Insertion Sort) (0) | 2022.01.10 |