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

쉘 정렬을 구현하는 Python 프로그램

<시간/>

쉘 정렬을 구현해야 하는 경우 함수를 정의하고 목록과 목록의 길이를 인수로 취합니다. 이 목록은 요소의 수가 가장 큰 값인 특정 수의 요소까지 정렬됩니다. 이것은 요소의 수가 가장 작은 값을 가질 때까지 수행됩니다.

이것은 목록의 모든 하위 목록에 대해 수행되며 이러한 모든 하위 목록은 정렬됩니다.

목록은 이기종 값(즉, 정수, 부동 소수점, 문자열 등과 같은 모든 데이터 유형의 데이터)을 저장하는 데 사용할 수 있습니다.

아래는 동일한 데모입니다 -

def shell_sort(my_list, list_len):
   interval = list_len // 2
   while interval > 0:
      for i in range(interval, list_len):
         temp = my_list[i]
         j = i
         while j >= interval and my_list[j - interval] > temp:
            my_list[j] = my_list[j - interval]
            j -= interval
         my_list[j] = temp
      interval //= 2

my_list = [ 45, 31, 62, 12, 89, 5, 9, 8]
list_len = len(my_list)
print ("The list before sorting is :")
print(my_list)
shell_sort(my_list, list_len)
print ("\nThe list after performing shell sorting is :")
print(my_list)

출력

The list before sorting is :
[45, 31, 62, 12, 89, 5, 9, 8]

The list after performing shell sorting is :
[5, 8, 9, 12, 31, 45, 62, 89]

설명

  • 목록과 목록의 길이를 인수로 사용하는 'shell_sort'라는 메서드가 정의되어 있습니다.
  • '간격' 변수는 '//' 비트 연산자를 사용하여 정의됩니다.
  • 층 분할을 수행합니다.
  • 값을 가장 가까운 정수로 내림합니다.
  • 목록이 반복되고 임시 변수가 생성됩니다.
  • 'interval' 변수는 목록의 모든 인덱스와 비교되고 목록의 모든 요소는 임시 변수와 비교됩니다.
  • '간격' 변수는 층 나누기를 수행하는 데 다시 사용됩니다.
  • 목록이 정의되고 콘솔에 표시됩니다.
  • 이 목록과 길이를 전달하여 메서드를 호출합니다.
  • 출력은 콘솔에 표시됩니다.