버블 정렬(bubble sort)
- 서로 인접한 두원소를 검사하여 정렬하는 알고리즘.
- 인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환한다.
-첫번째 자료와 두번째 자료를, 두번째 자료와 세번째 자료를, 세번째와 네번째를 비교하면서 교환해서 자료를 정렬한다.
- 1회전을 끝나고나면 가장 큰 자료가 맨뒤로 이동하고, 2회전에서는 두번째로 큰 자료가 뒤에서 두번째에 정렬이된다.
버블 정렬 예제1
public static void main(String[] args) {
// 버블정렬
int[] arr = {40, 10, 5, 30, 8};
if(arr[0] > arr[1]) {
int temp;
temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
if(arr[1] > arr[2]) {
int temp;
temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
}
if(arr[2] > arr[3]) {
int temp;
temp = arr[2];
arr[2] = arr[3];
arr[3] = temp;
}
if(arr[3] > arr[4]) {
int temp;
temp = arr[3];
arr[3] = arr[4];
arr[4] = temp;
}
for(int i= 0; i<arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("첫번째 사이클 종료");
}
5개의 자료를 가지고 있는 배열 [40, 10, 5, 30, 8]을 버블정렬로 첫번째 사이클을 돌린결과
제일 큰수인 40이 배열 제일 마지막으로 이동되었다.
버블정렬 예제1
package ex06;
public class BubbleEx2 {
public static void main(String[] args) {
// 버블정렬
int[] arr = {50, 40, 30, 10, 8, 5};
for(int i=0; i<5; i++) {
if(arr[i] > arr[i+1]) {
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
for(int i= 0; i<arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("첫번째 사이클 종료");
for(int i=0; i<4; i++) {
if(arr[i] > arr[i+1]) {
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
for(int i= 0; i<arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("두번째 사이클 종료");
for(int i=0; i<3; i++) {
if(arr[i] > arr[i+1]) {
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
for(int i= 0; i<arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("세번째 사이클 종료");
for(int i=0; i<2; i++) {
if(arr[i] > arr[i+1]) {
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
for(int i= 0; i<arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("네번째 사이클 종료");
for(int i=0; i<1; i++) {
if(arr[i] > arr[i+1]) {
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
for(int i= 0; i<arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("다섯번째 사이클 종료");
}
}
버블정렬 예제4
package ex06;
public class BubbleEx04 {
public static void main(String[] args) {
// 버블정렬
int[] arr = {50, 40, 30, 10, 8, 5};
int n =0;
for(int k=arr.length-1; k>0; k--) {
n++;
for(int i=0; i<k; i++) {
if(arr[i] > arr[i+1]) {
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
for(int i= 0; i<arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println(n+"번째 사이클 종료");
}
}
}
실행결과
'자바' 카테고리의 다른 글
강의영상, getter와 setter자동완성 (0) | 2022.08.02 |
---|---|
절차 지향, 객체 지향 (0) | 2022.08.02 |
요일 구하기, 윤년 (0) | 2022.07.28 |
구구단(2단출력, 9단까지거꾸로 가로) (0) | 2022.07.28 |
폰트 설정 - 6 (0) | 2022.07.28 |