Selection Sort และ Insertion Sort

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Miriam Antona

Software engineer

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวแรก

  • หาค่าที่น้อยที่สุด
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวแรก สมาชิกตัวแรกถูกไฮไลต์สีส้ม

  • หาค่าที่น้อยที่สุด
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สอง สมาชิกตัวแรกถูกไฮไลต์สีส้ม

  • หาค่าที่น้อยที่สุด
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สอง สมาชิกตัวที่สองถูกไฮไลต์สีส้ม

  • หาค่าที่น้อยที่สุด
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สาม สมาชิกตัวที่สองถูกไฮไลต์สีส้ม

  • หาค่าที่น้อยที่สุด
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สี่ สมาชิกตัวที่สองถูกไฮไลต์สีส้ม

  • หาค่าที่น้อยที่สุด
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สี่ สมาชิกตัวที่สี่ถูกไฮไลต์สีส้ม

  • หาค่าที่น้อยที่สุด
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่ห้า สมาชิกตัวที่สี่ถูกไฮไลต์สีส้ม

  • หาค่าที่น้อยที่สุด
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่สี่ถูกไฮไลต์สีส้ม มีลูกศรสองตัวแสดงว่าสมาชิกตัวแรกและตัวที่สี่จะถูกสลับกัน

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวแรกถูกไฮไลต์สีส้ม สมาชิกตัวแรกและตัวที่สี่ถูกสลับแล้ว

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวแรกถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สองถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สอง

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวแรกถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สองถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สาม

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวแรกถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สองถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สี่

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวแรกถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สองถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่ห้า

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่งและสองถูกไฮไลต์สีน้ำเงิน มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สาม

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่งและสองถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สามถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สาม

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่งและสองถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สามถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สี่

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่งและสองถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สี่ถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สี่

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่งและสองถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สี่ถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่ห้า

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่งและสองถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สี่ถูกไฮไลต์สีส้ม มีลูกศรสองตัวแสดงว่าสมาชิกตัวที่สามและสี่จะถูกสลับกัน

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่งและสองถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สามถูกไฮไลต์สีส้ม สมาชิกตัวที่สามและสี่ถูกสลับแล้ว

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สี่

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สี่ถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่สี่

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สี่ถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่ห้า

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่ห้าถูกไฮไลต์สีส้ม มีพอยน์เตอร์ชี้ไปที่สมาชิกตัวที่ห้า

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่ห้าถูกไฮไลต์สีส้ม มีลูกศรสองตัวแสดงว่าสมาชิกตัวที่สี่และห้าจะถูกสลับกัน

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สี่ถูกไฮไลต์สีส้ม สมาชิกตัวที่สี่และห้าถูกสลับแล้ว

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง สาม และสี่ถูกไฮไลต์สีน้ำเงิน

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกทุกตัวถูกไฮไลต์สีน้ำเงิน

  • หาค่าที่น้อยที่สุด
  • สลับค่าที่น้อยที่สุดกับสมาชิกตัวแรกที่ยังไม่เรียง
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort - การนำไปใช้งาน

def selection_sort(my_list):
  list_length = len(my_list)
  for i in range(list_length - 1):

lowest = my_list[i]
index = i
for j in range(i + 1, list_length):
if my_list[j] < lowest:
index = j
lowest = my_list[j]
my_list[i] , my_list[index] = my_list[index] , my_list[i]
return my_list
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Selection sort - ความซับซ้อน

  • กรณีเลวร้ายที่สุด: $O(n^2)$
  • กรณีเฉลี่ย: $\Theta(n^2)$
  • กรณีดีที่สุด: $\Omega(n^2)$
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวแรกถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สองถูกยกขึ้นเหนือตัวอื่น

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวแรกถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สองถูกยกขึ้นเหนือตัวอื่น สมาชิกตัวแรกถูกเลื่อนไปทางขวา

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่สองถูกไฮไลต์สีน้ำเงิน สมาชิกที่ถูกยกขึ้นถูกวางไว้ที่ตำแหน่งแรกแล้ว

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่งและสองถูกไฮไลต์สีน้ำเงิน

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่งและสองถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สามถูกยกขึ้นเหนือตัวอื่น

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สามถูกยกขึ้นเหนือตัวอื่น

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สามถูกยกขึ้นเหนือตัวอื่น สมาชิกตัวที่สามถูกเลื่อนไปทางขวา

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สามถูกยกขึ้นเหนือตัวอื่น สมาชิกตัวที่สามและสองถูกเลื่อนไปทางขวา

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สามถูกยกขึ้นเหนือตัวอื่น สมาชิกตัวที่สาม สอง และหนึ่งถูกเลื่อนไปทางขวา

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง และสามถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่สามถูกยกขึ้นเหนือตัวอื่น สมาชิกตัวที่สาม สอง และหนึ่งถูกเลื่อนไปทางขวา สมาชิกที่ถูกยกขึ้นถูกวางไว้ที่ตำแหน่งแรกแล้ว

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง สาม และสี่ถูกไฮไลต์สีน้ำเงิน

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง สาม และสี่ถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่ห้าถูกยกขึ้นเหนือตัวอื่น

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง สาม และสี่ถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่ห้าถูกยกขึ้นเหนือตัวอื่น สมาชิกตัวที่สี่ถูกเลื่อนไปทางขวา

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort

ภาพแสดงรายการตัวเลขที่ยังไม่เรียงลำดับ สมาชิกตัวที่หนึ่ง สอง สาม และสี่ถูกไฮไลต์สีน้ำเงิน สมาชิกตัวที่ห้าถูกยกขึ้นเหนือตัวอื่น สมาชิกที่ถูกยกขึ้นถูกวางไว้ที่ตำแหน่งที่สี่แล้ว

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort - การนำไปใช้งาน

def insertion_sort(my_list):
  for i in range(1, len(my_list)):

number_to_order = my_list[i]
j = i - 1
while j >= 0 and number_to_order < my_list[j]:
my_list[j + 1] = my_list[j]
j -= 1
my_list[j + 1] = number_to_order
return my_list
โครงสร้างข้อมูลและอัลกอริทึมใน Python

Insertion sort - ความซับซ้อน

  • กรณีเลวร้ายที่สุด: $O(n^2)$
  • กรณีเฉลี่ย: $\Theta(n^2)$
  • กรณีดีที่สุด: $\Omega(n)$
โครงสร้างข้อมูลและอัลกอริทึมใน Python

มาฝึกกันเถอะ!

โครงสร้างข้อมูลและอัลกอริทึมใน Python

Preparing Video For Download...