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

ฟังก์ชันอัลกอริทึม Bisect ใน Python

โมดูลนี้ให้การสนับสนุนในการรักษา List ให้เรียงลำดับโดยไม่ต้องเรียงใหม่ทุกครั้งที่เพิ่มสมาชิกใหม่ เราจะเน้นที่สองฟังก์ชันคือ insort_left และ insort_right

insort_left

ฟังก์ชันนี้คืนค่า List ที่เรียงแล้วหลังจากแทรกตัวเลขในตำแหน่งที่เหมาะสม หากสมาชิกมีอยู่แล้วใน List จะถูกแทรกที่ตำแหน่งซ้ายสุดที่เป็นไปได้ ฟังก์ชันนี้รับอาร์กิวเมนต์ 4 ตัว: List ที่ต้องทำงาน, ตัวเลขที่จะแทรก, ตำแหน่งเริ่มต้นใน List ที่พิจารณา, ตำแหน่งสิ้นสุดที่พิจารณา ค่าเริ่มต้นของตำแหน่งเริ่มและสิ้นสุดคือ 0 และความยาวของ List ตามลำดับ

insort_right

คล้ายกับ insort_left แต่สมาชิกใหม่จะถูกแทรกหลังจากสมาชิกที่มีอยู่แล้ว โดยไม่รักษาลำดับเรียงที่เข้มงวด

ไวยากรณ์ (Syntax)

bisect.insort_left(a, x, lo=0, hi=len(a))
bisect.insort_right(a, x, lo=0, hi=len(a))
a คือลำดับที่กำหนด
x คือตัวเลขที่จะแทรก

ตัวอย่าง

ในตัวอย่างด้านล่าง เราใช้ List และนำฟังก์ชัน bisect.insort_left มาใช้ก่อน

import bisect
listA = [11, 13, 23, 7, 13, 15]
print("List ที่กำหนด:", listA)
bisect.insort_left(listA, 14)
print("Bisect left:\n", listA)
listB = [11, 13, 23, 7, 13, 15]
print("List ที่กำหนด:", listB)
bisect.insort_right(listB, 14, 0, 4)
print("Bisect right:\n", listB)

ผลลัพธ์

การรันโค้ดข้างต้นจะได้ผลดังนี้ −

List ที่กำหนด: [11, 13, 23, 7, 13, 15]
Bisect left: [11, 13, 23, 7, 13, 14, 15]
List ที่กำหนด: [11, 13, 23, 7, 13, 15]
Bisect right: [11, 13, 14, 23, 7, 13, 15]