ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [알고리즘] 기본 정렬 알고리즘[버블 정렬, 삽입 정렬, 선택 정렬] - ItisFuture
    Algorithm 2022. 9. 14. 22:13

    버블 정렬

    ---- for문을 한 번 돌면 마지막에는 무조건 큰 숫자가 담긴다

    ---- 매번 처음 인덱스 부터 시작

    ---- 기준 인덱스와 바로 뒤 인덱스를 비교하여 앞이 크면 자리를 바꾼다.

    def bubblesort(ary):
        for idx1 in range(len(ary) - 1): # 길이보다 하나 작게 반복할거야
            for idx2 in range(len(ary) - idx1 - 1): # 매번 처음부터 시작, 끝은 길이에 반복 횟수와 1을 빼줌 -> 왜 1을 빼줘?
                if ary[idx2] > ary[idx2+1]: # 기준보다 하나 큰 인덱스를 사용하기 때문에
                    ary[idx2], ary[idx2+1] = ary[idx2+1], ary[idx2]
        return ary

    삽입 정렬

    - 기준과 기준 다음의 데이터를 비교하고 기준보다 작으면 기준 역순으로 작을 때마다 자리를 바꿔주며 정렬하는 것

    def insert_sort(ary):
        for idx1 in range(len(ary)-1):
            if ary[idx1] > ary[idx1 + 1]:
                for idx2 in range(idx1+1,0,-1):
                    if ary[idx2-1] > ary[idx2]:
                        ary[idx2-1], ary[idx2] = ary[idx2], ary[idx2-1]
                    else:
                        break
        return ary

     

    선택 정렬

    - 시작 값에서부터 리스트의 최솟값을 찾아 시작 값과 바꿔준다.

    def select_sort(ary):
        for idx1 in range(len(ary)-1):
            low_idx = idx1
            for idx2 in range(idx1+1, len(ary)):
                if ary[idx2] < ary[low_idx]:
                    low_idx = idx2
    
            ary[idx1],ary[low_idx] = ary[low_idx], ary[idx1]
        return ary

     

    'Algorithm' 카테고리의 다른 글

    [알고리즘] 더하거나 빼거나 - ItisFuture  (0) 2022.09.13

    댓글

Designed by Tistory.