반응형

파이썬, 버블 정렬, 선택 정렬, 삽입 정렬 예제

 

구현한 파이썬 코드 예제는 다음과 같습니다. 

 

# Bubble Sort : O(n^2)
def bubbleSort(arr, size):
    for i in range(size-1):
        for j in range(size-1-i):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

# Selection Sort : O(n^2)
# 최소 위치를 찾고 왼쪽으로 순서대로 보냄 
def selectionSort(arr, size):
    for i in range(size):
        mPos = i                   # 최소 지점 초기화 (현재 i)
        for j in range(i+1, size): # 비교 대상은 오른쪽 
            if arr[j] < arr[mPos]: # 최소 지점보더 더 작으면 위치 변경 
                mPos = j
        arr[i], arr[mPos] = arr[mPos], arr[i] # 최소 위치와 i번째 값 교환            
    return arr

 

# Insertion Sort : O(n^2)
# 자신 왼쪽으로 계속 비교하고,
# 왼쪽이 크면 교환 작업 계속하고, 자신보다 작으면 중단  
def insertionSort(arr, size):
    for i in range(1, size):    # 두 번째부터 시작
        j = i-1
        while j >= 0:           # 왼쪽 방향으로 비교
            if arr[i] > arr[j]: # 왼쪽이 작으면 종료 
                break
            if arr[j] > arr[i]: # 왼쪽이 크면 교환 
                arr[j], arr[i] = arr[i], arr[j]
                i = j           # 기준값 i를 이동한 곳으로 변경 
            j -= 1              # 다음 j 위치로 이동 
    return arr

data = [6, 4, 3, 2, 1, 7, 8, 9, 0]

 

print( bubbleSort(data.copy(),    len(data)) )
print( selectionSort(data.copy(), len(data)) )
print( insertionSort(data.copy(), len(data)) )

 

<이상>

반응형

+ Recent posts