/*==================================
■■■ 정렬(sort) 알고리즘 ■■■
==================================*/
/*
○ 정렬
: 데이터를 특정한 규칙(기준)에 맞게 순서대로 나열(오름차순, 내림차순)
○ 정렬의 목적
: 데이터 처리 과정의 편의성이나 가독성을 높이기 위함
→ 보기 좋게... 검색하기 위함
○ 정렬의 종류
: 선택 정렬, 버블 정렬, 삽입 정렬, 힙 정렬, 퀵 정렬, 쉘 정렬, . . . . .
// 버블 정렬(Bubble Sort)
// 실행 예)
// Source Data : 52 42 12 62 60
// Sorted Data : 12 42 52 60 62 -- 오름차순 정렬하고싶음.. 어케할까?
*/
public class Test110
{
public static void main(String[] args)
{
int [] a = {52, 42, 12, 62, 60};
/*
52, 42, 12, 62, 60
-- --
42, 52, 12, 62, 60
-- --
42, 12, 52, 62, 60
-- --
42, 12, 52, 60, 62
----------------------- 1회전
42, 12, 52, 60, 62
-- --
12, 42, 52, 60, 62
-- --
12, 42, 52, 60, 62
-- --
----------------------- 2회전
12, 42, 52, 60, 62
-- --
12, 42, 52, 60, 62
-- --
----------------------- 3회전
12, 42, 52, 60, 62
*/
for (int n : a )
System.out.printf("%4d", n);
System.out.println();
//-------------------------------------
// Bubble Sort
for (int i = 1 ; i < a.length ; i++) // 뒤에서 비교 대상을 하나씩 줄여주는 역할
{ // 1 2 3 4
for (int j = 0; j < a.length-i ; j++ ) // 0123 012 01 0 (비교기준자리) vs 1234 123 12 1
{
if (a[j] > a[j+1])
{
a[j] = a[j]^a[j+1];
a[j+1] = a[j+1]^a[j];
a[j] = a[j]^a[j+1];
}
}
}
for (int k : a )
System.out.printf("%4d", k);
System.out.println();
}
}
// 실행 결과
/*
52 42 12 62 60
12 42 52 60 62
계속하려면 아무 키나 누르십시오 . . .
*/
728x90
'JAVA' 카테고리의 다른 글
Test112.java / 정렬(sort) 알고리즘 / 사용자로부터 여러 학생의 성적 데이터를 입력받아 점수가 높은 학생부터 낮은 순으로 등수를 부여하여 결과를 출력하는 프로그램 구현 (0) | 2022.10.22 |
---|---|
Teset111.java / 정렬(sort) 알고리즘 / 향상된 버블 정렬(Bubble Sort) (0) | 2022.10.22 |
Test109.java / 정렬(sort)알고리즘 / 각종 정렬 실습 (0) | 2022.10.22 |
Test108.java / 주민번호등록 생성 프로그램 / 주민등록번호 유효성 검사 프로그램 만들기 (1) | 2022.10.22 |
Test107.java / 만년달력 구현 / 연도와 월을 입력하여 해당 연도와 월을 출력하는 달력 프로그램 만들기 (0) | 2022.10.22 |
댓글