본문 바로가기
카테고리 없음

[코딩] 버블 정렬

by Best Moment Science Justice 2024. 11. 25.

안녕하세요! 오늘은 배열을 순서대로 배열하는 코드, 즉 배열 정렬에 대해 소개하려고 합니다. 배열을 정렬하는 방법은 프로그래밍에서 매우 중요한 개념이며, 여러 가지 방법이 있습니다. 오늘은 그 중 가장 기본적인 버블 정렬(Bubble Sort) 알고리즘을 소개할게요. 🖥️


1. 배열 정렬이란?

배열 정렬은 주어진 배열의 원소들을 오름차순 또는 내림차순으로 순서대로 배치하는 작업입니다. 예를 들어, 숫자 배열 [5, 2, 9, 1]을 오름차순으로 정렬하면 [1, 2, 5, 9]와 같이 배열의 순서가 정해집니다.


2. 버블 정렬(Bubble Sort) 알고리즘

버블 정렬은 인접한 원소들을 비교하고, 크기 순서대로 배열을 정렬하는 가장 간단한 정렬 알고리즘입니다. 이 알고리즘은 배열을 여러 번 반복하면서 인접한 원소들을 비교하여 정렬을 완성해 나갑니다.

버블 정렬 동작 방식:

  1. 첫 번째 원소와 두 번째 원소를 비교하여, 더 큰 값을 뒤로 보내는 방식으로 정렬합니다.
  2. 두 번째 원소와 세 번째 원소를 비교하고, 또 뒤로 보내는 방식으로 반복합니다.
  3. 배열의 끝까지 비교가 끝나면, 다시 처음부터 비교하는 작업을 반복하여 배열이 정렬될 때까지 계속됩니다.

3. 버블 정렬 코드 (Python 예시)

다음은 버블 정렬을 이용해 배열을 오름차순으로 정렬하는 파이썬 코드입니다.

 
# 버블 정렬 함수 정의
def bubble_sort(arr):
    n = len(arr)
    # 배열의 크기만큼 반복
    for i in range(n):
        # 배열 끝에서 i번째 원소를 제외하고 비교
        for j in range(0, n-i-1):
            # 인접한 원소들 비교
            if arr[j] > arr[j+1]:
                # 더 큰 값이 앞에 오도록 스왑
                arr[j], arr[j+1] = arr[j+1], arr[j]

# 정렬할 배열
arr = [64, 34, 25, 12, 22, 11, 90]

# 버블 정렬 실행
bubble_sort(arr)

# 정렬된 배열 출력
print("정렬된 배열:", arr)
 
 
 
***
실행결과
 
정렬된 배열: [11, 12, 22, 25, 34, 64, 90]

4. 코드 설명

  • bubble_sort 함수는 주어진 배열을 오름차순으로 정렬합니다.
  • for i in range(n)은 전체 배열을 여러 번 반복하면서 정렬을 계속합니다.
  • if arr[j] > arr[j+1]는 두 원소를 비교하여, 더 큰 값을 뒤로 보내는 역할을 합니다.
  • **스왑(swap)**을 통해 원소의 자리를 바꿉니다. arr[j], arr[j+1] = arr[j+1], arr[j]는 파이썬에서 자주 사용되는 스왑 방식입니다.

5. 버블 정렬의 시간 복잡도

버블 정렬의 시간 복잡도는 **O(n^2)**입니다. 즉, 배열의 크기가 커질수록 정렬하는 데 시간이 많이 소요됩니다. 따라서 작은 배열에는 잘 동작하지만, 매우 큰 배열에 대해서는 효율적인 정렬 알고리즘(예: 퀵 정렬, 병합 정렬)을 사용하는 것이 좋습니다.


6. 마무리

배열을 순서대로 정렬하는 것은 많은 알고리즘에서 사용되는 기본적인 작업입니다. 오늘 소개한 버블 정렬은 매우 직관적이지만 효율성이 떨어지기 때문에, 더 큰 데이터에서는 퀵 정렬이나 병합 정렬 같은 고급 알고리즘을 사용하는 것이 좋습니다. 😊

배열 정렬을 구현할 때는 다양한 방법을 시도해 보고, 문제의 크기와 조건에 맞는 최적의 알고리즘을 선택하는 것이 중요합니다.