본문 바로가기

알고리즘

[알고리즘] 버블정렬

버블정렬이란

  • 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘이다.

논리

  • 0번 인덱스와 1번인덱스를 비교한다.
  • 1번 인덱스가 작다면 앞으로 배치한다.
  • 1번 인덱스가 크다면 상태를 유지한다.
  • next
  • 1번 인덱스와 2번인덱스를 비교한다.
  • 2번 인덱스가 작다면 앞으로 배치한다.
  • 1번 인덱스가 크다면 상태를 유지한다.
  • next
  • ....

이미지로 보기

특징

  • 알고리즘이 단순하다.
  • 안정 정렬 이다.(동일한 값을 가진 데이터들의 순서가 원래의 순서와 같이 유지되는 정렬방법)
    • 동일 값이라도 그 데이터가 내포하는 의미는 다를 수 있다.
      • ex) 점수가 같은 학생

단점

  • 특정 요소가 최종 정렬 위치에 있는 경우라도 교환이 일어난다.

예제

  • [3,2,5,1,4]이 [1,2,3,4,5]가 되도록 정렬한다.

예제 코드

// 배열 선언
int[] arr =  new int[5];

// 배열에 값 넣기
arr[0] = 3;
arr[1] = 2;
arr[2] = 5;
arr[3] = 1;
arr[4] = 4;

//0번 인덱스부터 길이만큼 반복
for (int j = 0; j < arr.length; j++) 
{

    for (int i = 0; i < arr.length-1-j; i++) 
    {

        int temp = 0;

        if(arr[i]>arr[i+1]) 
        {

                temp = arr[i];

                arr[i] = arr[i+1];

                arr[i+1]=temp;

        }

}

'알고리즘' 카테고리의 다른 글

[알고리즘] 이진탐색  (0) 2023.11.30
[알고리즘] 선택정렬  (0) 2023.11.29
[알고리즘] 삽입정렬  (0) 2023.11.28
[알고리즘] 탐색 알고리즘  (0) 2023.11.27
[알고리즘] 최소 값 찾기 알고리즘  (0) 2023.11.27