Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

이진 삽입 정렬을 위한 Python 프로그램


이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다.

문제 설명 − 배열이 주어졌으므로 이진 삽입 정렬의 개념을 사용하여 정렬해야 합니다.

여기에서는 이름에서 알 수 있듯이 삽입 정렬 알고리즘과 함께 이진 검색의 개념을 사용합니다.

이제 아래 구현에서 솔루션을 관찰해 보겠습니다 -

# sort
def insertion_sort(arr):
   for i in range(1, len(arr)):
      temp = arr[i]
      pos = binary_search(arr, temp, 0, i) + 1
      for k in range(i, pos, -1):
         arr[k] = arr[k - 1]
      arr[pos] = temp
def binary_search(arr, key, start, end):
   #key
   if end - start <= 1:
      if key < arr[start]:
         return start - 1
      else:
         return start
   mid = (start + end)//2
   if arr[mid] < key:
      return binary_search(arr, key, mid, end)
   elif arr[mid] > key:
      return binary_search(arr, key, start, mid)
   else:
      return mid
# main
arr = [1,5,3,4,8,6,3,4]
n = len(arr)
insertion_sort(arr)
print("Sorted array is:")
for i in range(n):
   print(arr[i],end=" ")

출력

Sorted array is :
1 3 3 4 4 5 5 6 8

이진 삽입 정렬을 위한 Python 프로그램

모든 변수는 로컬 범위에서 선언되며 해당 참조는 위 그림과 같습니다.

결론

이 기사에서는 이진 삽입 정렬을 위한 Python 프로그램을 만드는 방법에 대해 배웠습니다.