7
การจัดเรียงแบบสุ่มคนตาบอด
นี่เป็นรูปแบบที่พบได้ทั่วไปสำหรับการเรียงลำดับอัลกอริทึม: def sort(l): while not is_sorted(l): choose indices i, j assert i < j if l[i] > l[j]: l[i], l[j] = l[j], l[i] ขั้นตอนวิธีการเหล่านี้ทำงานได้ดีเพราะดัชนีiและได้รับการแต่งตั้งอย่างรอบคอบบนพื้นฐานของรัฐของรายการjl อย่างไรก็ตามจะเกิดอะไรขึ้นถ้าเรามองไม่เห็นlและต้องเลือกสุ่มสี่สุ่มห้า เราจะเรียงลำดับรายการได้เร็วแค่ไหน? lความท้าทายของคุณคือการเขียนฟังก์ชั่นที่ผลคู่แบบสุ่มของดัชนีได้รับเพียงความยาวของ โดยเฉพาะคุณต้องเอาท์พุทสองดัชนีด้วยi, j 0 <= i < j < len(l)ฟังก์ชั่นของคุณควรทำงานกับความยาวของรายการใด ๆ แต่จะได้คะแนนในรายการความยาว 100 คะแนนของคุณคือจำนวนตัวเลือกดัชนีเฉลี่ยที่จำเป็นในการเรียงลำดับรายการสับแบบสุ่มอย่างสม่ำเสมอตามรูปแบบด้านบนซึ่งดัชนีจะถูกเลือกตามฟังก์ชั่นของคุณ ฉันจะให้คะแนนการส่งโดยใช้จำนวนตัวเลือกดัชนีเฉลี่ยมากกว่า 1,000 ครั้งในรายการที่มีการสับแบบสุ่มที่มีความยาว 100 โดยไม่มีการป้อนซ้ำ ฉันขอสงวนสิทธิ์ในการเรียกใช้การทดลองน้อยลงหากการส่งนั้นชัดเจนไม่ใช่การแข่งขันหรือไม่ยุติลงและฉันจะทำการทดลองเพิ่มเติมเพื่อแยกความแตกต่างของคู่แข่งชั้นนำเพื่อค้นหาผู้ชนะคนเดียว หากการส่งยอดนิยมหลายรายการยังคงอยู่ภายในระยะขอบของข้อผิดพลาดที่ขีด จำกัด ของทรัพยากรการคำนวณของฉันฉันจะประกาศผู้ชนะการส่งก่อนหน้านี้จนกว่าจะสามารถนำทรัพยากรการคำนวณอื่น ๆ …