อัลกอริทึมที่สร้างขึ้นในsort()
วิธีการใดใน Python ใช้? เป็นไปได้ไหมที่จะดูรหัสสำหรับวิธีการนั้น?
sort()
วิธีการที่ไหนหรือการจัดรูปแบบให้กับล่ามคืออะไร แต่มันต้องอยู่ที่นั่นที่ไหนสักแห่งและฉันพนันได้เลยว่ามันถูกนำไปใช้ใน C สำหรับปัญหาด้านความเร็ว
อัลกอริทึมที่สร้างขึ้นในsort()
วิธีการใดใน Python ใช้? เป็นไปได้ไหมที่จะดูรหัสสำหรับวิธีการนั้น?
sort()
วิธีการที่ไหนหรือการจัดรูปแบบให้กับล่ามคืออะไร แต่มันต้องอยู่ที่นั่นที่ไหนสักแห่งและฉันพนันได้เลยว่ามันถูกนำไปใช้ใน C สำหรับปัญหาด้านความเร็ว
คำตอบ:
ชัวร์! รหัสอยู่ที่นี่เริ่มต้นด้วยฟังก์ชันislt
และดำเนินการต่อไปสักพัก ;-) ตามความคิดเห็นของ Chris มันคือรหัส C นอกจากนี้คุณยังต้องการอ่านไฟล์ข้อความนี้สำหรับคำอธิบายที่เป็นข้อความผลลัพธ์และอื่น ๆ
หากคุณชอบอ่านโค้ด Java มากกว่าโค้ด C คุณสามารถดูการใช้งาน timsort ในและสำหรับ Java ของ Joshua Bloch (Joshua เป็นคนที่ใช้งานในปี 1997 การผสานที่แก้ไขซึ่งยังคงใช้ใน Java และใคร ๆ ก็หวังว่า Java จะ ในที่สุดก็เปลี่ยนไปใช้พอร์ต timsort ล่าสุดของเขา)
คำอธิบายบางอย่างเกี่ยวกับพอร์ต Java ของ timsort อยู่ที่นี่ความแตกต่างอยู่ที่นี่ (พร้อมตัวชี้ไปยังไฟล์ที่จำเป็นทั้งหมด) ไฟล์สำคัญอยู่ที่นี่ - FWIW ในขณะที่ฉันเป็นโปรแกรมเมอร์ C ที่ดีกว่าโปรแกรมเมอร์ Java ในกรณีนี้ฉันพบ โค้ด Java ของ Joshua สามารถอ่านได้โดยรวมมากกว่ารหัส C ของ Tim ;-)
list_ass_item()
อะไร :)
listsort.txt
เพิ่มบันทึกย่อบางส่วนที่กล่าวถึงความสับสนทั่วไป
ฉันแค่ต้องการส่งลิงค์ที่เป็นประโยชน์ที่ฉันพลาดไปในคำตอบที่ครอบคลุมเป็นอย่างอื่นของ Alex: คำอธิบายระดับสูงเกี่ยวกับ timsort ของ Python (พร้อมการแสดงภาพกราฟ!)
(ใช่ตอนนี้อัลกอริทึมรู้จักกันในชื่อTimsort )
ในเวอร์ชัน python ก่อนหน้านี้ฟังก์ชันการจัดเรียงจะใช้ Quicksort เวอร์ชันที่แก้ไขแล้ว อย่างไรก็ตามถือว่าไม่เสถียรและเมื่อ 2.3 พวกเขาเปลี่ยนไปใช้อัลกอริธึมการผสานแบบปรับได้