Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để triển khai Shell Sort

Khi được yêu cầu thực hiện sắp xếp trình bao, một hàm được xác định và điều này sẽ lấy một danh sách và độ dài của danh sách làm đối số. Danh sách này được sắp xếp theo một số phần tử cụ thể, trong đó số phần tử là giá trị lớn nhất. Điều này được thực hiện cho đến khi số phần tử có giá trị nhỏ nhất.

Điều này được thực hiện cho tất cả các danh sách con trong danh sách và tất cả các danh sách con này đều được sắp xếp.

Một danh sách có thể được sử dụng để lưu trữ các giá trị không đồng nhất (tức là dữ liệu thuộc bất kỳ kiểu dữ liệu nào như số nguyên, dấu phẩy động, chuỗi, v.v.).

Dưới đây là một minh chứng về điều tương tự -

Ví dụ

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)

Đầu ra

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]

Giải thích

  • Một phương thức có tên 'shell_sort' được xác định, lấy danh sách và độ dài của danh sách làm đối số.
  • Biến 'khoảng thời gian' được xác định bằng cách sử dụng toán tử bitwise '//'.
  • Nó thực hiện phân chia tầng.
  • Nó làm tròn giá trị xuống một số nguyên gần nhất.
  • Danh sách được lặp lại và một biến tạm thời được tạo.
  • Biến 'khoảng thời gian' được so sánh với mọi chỉ mục của danh sách và mọi phần tử trong danh sách được so sánh với biến tạm thời.
  • Biến 'khoảng thời gian' một lần nữa được sử dụng để thực hiện phân chia tầng.
  • Danh sách được xác định và hiển thị trên bảng điều khiển.
  • Phương thức được gọi bằng cách chuyển danh sách này và độ dài của nó.
  • Kết quả đầu ra được hiển thị trên bảng điều khiển.