JAVA를 잡아라!...
JAVA_배열 알고리즘_정렬 알고리즘_버블 정렬 본문
▶ 버블정렬이란?
: 배열내의 두개의 인접한 Index를 비교해 더 큰 숫자를 뒤로보내 차곡차곡 쌓아 정렬하는 방
- 배열의 알고리즘 중 하나!
- 배우기 쉽지만 느림(성능이 안좋음)
- 버블정렬은 1회 수행시 가장 큰 값이 맨 뒤로 이동하는 로직!
- 큰 값들을 빠르게 찾아야할 때 --> 당장 빨리 큰 값을 찾아야할 때 활용
- 쉽기 때문에 정렬할 데이터가 소수일 때 유리
- 코드가 단순하며 추가 메모리가 필요하지 않음
ver1. 코드
package freefree;
public class Task02 {
public static void main(String[] args) {
//int[] ar = {3,2,5,1,4};
int[] ar = new int[5];
ar[0] = 3;
ar[1] = 2;
ar[2] = 5;
ar[3] = 1;
ar[4] = 4;
// 정렬을 몇번할지 결정하는 반복문
// 배열의 요소개수만큼 수행하겠다! == 5번 정렬하겠다!
for (int j = 0; j < ar.length; j++) {
boolean flag = true;
//배열을 1회 정렬할 때 사용되는 반복문
for (int i = 0; i < ar.length-1-j; i++) {
// temp : 임시 저장변수, 임시 변수
// 변수값들을 서로 교환하려면 반드시 temp가 필요함!
// temp,tmp 변수명이 발견된다면?
// 아~교환하려나보다~ 예상가능함!
if(ar[i]>ar[i+1]) {
int temp = 0;
temp = ar[i];
ar[i] = ar[i+1];
ar[i+1]=temp;
flag = false;
}
}
//1번 정렬을 마친상태 == 1회전 정렬이 끝났다.
if(flag) {
break;
}
}
for (int i = 0; i < ar.length; i++) {
System.out.print(ar[i]+" ");
}
System.out.println();
}
}
ver1. 디버깅표
ver2. 코드
package freefree;
public class Task02 {
public static void main(String[] args) {
int[] ar = new int[5];
ar[0] = 3;
ar[1] = 2;
ar[2] = 5;
ar[3] = 1;
ar[4] = 4;
int n = ar.length;
boolean flag = true;
while (flag) { //flag가 true일때만 반복, false이면 종료!
flag = false;
for (int i = 0; i < n - 1; i++) {
if (ar[i] > ar[i + 1]) {
int temp = ar[i];
ar[i] = ar[i + 1];
ar[i + 1] = temp;
flag = true;
//if문 안에 들어오면 flag가 true이기때문에 while문 반복
}
}
n--; //뒤쪽 정렬을 하나씩 차감해야되서 n을 -1씩줄여 for문 반복 줄이기
}
for (int i = 0; i < ar.length; i++) {
System.out.print(ar[i] + " ");
}
}
}
ver2. 디버깅표
'JAVA > JAVA_디버깅표' 카테고리의 다른 글
JAVA_배열 알고리즘_정렬 알고리즘_선택 정렬 (0) | 2023.11.30 |
---|---|
JAVA_배열 알고리즘_정렬 알고리즘_삽입 정렬 (0) | 2023.11.28 |
JAVA_배열 알고리즘_최대값(최소값) 찾기 알고리즘 (1) | 2023.11.23 |
JAVA_별 찍기 (2) | 2023.11.22 |