เมื่อจำเป็นต้องใช้การเรียงลำดับเชลล์ ฟังก์ชันจะถูกกำหนด ซึ่งใช้รายการและความยาวของรายการเป็นอาร์กิวเมนต์ รายการนี้จัดเรียงตามจำนวนองค์ประกอบเฉพาะ โดยที่จำนวนองค์ประกอบจะเป็นค่าที่มากที่สุด จนกว่าจำนวนองค์ประกอบจะมีค่าน้อยที่สุด
เสร็จสิ้นสำหรับรายการย่อยทั้งหมดในรายการ และรายการย่อยทั้งหมดจะถูกจัดเรียง
สามารถใช้รายการเพื่อเก็บค่าที่แตกต่างกัน (เช่น ข้อมูลของประเภทข้อมูลใดๆ เช่น จำนวนเต็ม จุดลอยตัว สตริง และอื่นๆ)
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -
ตัวอย่าง
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' ซึ่งรับรายการ และความยาวของรายการเป็นอาร์กิวเมนต์
- ตัวแปร 'ช่วง' ถูกกำหนดโดยใช้ตัวดำเนินการระดับบิต '//'
- ทำหน้าที่แบ่งพื้น
- ปัดเศษค่าให้เป็นจำนวนเต็มที่ใกล้เคียงที่สุด
- รายการถูกทำซ้ำ และสร้างตัวแปรชั่วคราว
- ตัวแปร 'ช่วง' จะถูกเปรียบเทียบกับทุกดัชนีของรายการ และทุกองค์ประกอบในรายการจะถูกเปรียบเทียบกับตัวแปรชั่วคราว
- ตัวแปร 'ช่วง' ถูกใช้อีกครั้งเพื่อดำเนินการแบ่งพื้น
- รายการถูกกำหนดและแสดงบนคอนโซล
- เมธอดนี้เรียกโดยการส่งผ่านรายการนี้และความยาวของมัน
- ผลลัพธ์จะแสดงบนคอนโซล