Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Insertion Sort ใน Python คืออะไร

Insertion Sort คืออะไร

Insertion Sort เป็นอัลกอริทึมจัดเรียงง่ายๆ แบ่ง array เป็นส่วนที่เรียงแล้ว (sorted) และยังไม่ได้เรียง (unsorted) นำ element จาก unsorted ไปวางตำแหน่งที่ถูกต้องใน sorted

ขั้นตอนการทำงาน

  1. วนลูป i จาก 1 ถึง n-1
  2. เก็บ key = arr[i]
  3. เปรียบเทียบ key กับ elements ด้านซ้าย (j = i-1, i-2, ...)
  4. เลื่อน elements ที่มากกว่า key ไปทางขวา
  5. วาง key ที่ตำแหน่งที่ถูกต้อง

ตัวอย่างขั้นตอน

Array: [4, 6, 1, 7, 2, 5]

  • i=1: 6 > 4 ไม่ต้องย้าย
  • i=2: 1 < 6,4 → เลื่อน 6,4 ไปขวา → [1, 4, 6, 7, 2, 5]
  • i=3: 7 > 6 ไม่ต้องย้าย
  • i=4: 2 < 7,6,4 → เลื่อน → [1, 2, 4, 6, 7, 5]
  • i=5: 5 < 7,6 → เลื่อน → [1, 2, 4, 5, 6, 7]

Complexity

  • Time: O(n²) worst/average, O(n) best (already sorted)
  • Space: O(1) in-place
  • Stable: รักษาลำดับของค่าเท่ากัน

โค้ด Python

def insertionSort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >= 0 and key < arr[j]:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key

arr = [4, 6, 1, 7, 2, 5]
insertionSort(arr)
print(arr)  # [1, 2, 4, 5, 6, 7]

เมื่อไหร่ควรใช้

  • ข้อมูลน้อย (n < 50)
  • ข้อมูลเรียงบางส่วนแล้ว (near sorted)
  • ต้องการ stable sort
  • Memory จำกัด (in-place)