ดี ... มี 59 คำถาม (ตอนนี้ 60) ที่ติดแท็กการเรียงลำดับแต่ไม่มีคำตอบง่าย ๆ
ที่จะต้องได้รับการแก้ไข
สำหรับผู้ที่ไม่คุ้นเคยกับquicksortนี่คือรายละเอียดความเอื้อเฟื้อของ Wikipedia-
- เลือกองค์ประกอบที่เรียกว่าpivotจากอาร์เรย์
- จัดลำดับอาร์เรย์ใหม่เพื่อให้องค์ประกอบทั้งหมดที่มีค่าน้อยกว่าเดือยมาก่อนหน้าเดือยในขณะที่องค์ประกอบทั้งหมดที่มีค่ามากกว่าเดือยมาหลังจากนั้น (ค่าเท่ากันสามารถไปทางใดทางหนึ่ง) หลังจากการแบ่งพาร์ติชันนี้เดือยจะอยู่ในตำแหน่งสุดท้าย สิ่งนี้เรียกว่าการดำเนินการพาร์ติชัน
- ใช้ขั้นตอนข้างต้นซ้ำกับองค์ประกอบย่อยที่มีค่าน้อยกว่าและแยกย่อยกับองค์ประกอบย่อยที่มีค่ามากกว่า
กฎระเบียบ
กฎง่าย ๆ :
- ใช้ quicksort เชิงตัวเลขในภาษาการเขียนโปรแกรมที่คุณเลือก
- เดือยควรจะเลือกโดยการสุ่มหรือกับค่ามัธยฐานของสาม (องค์ประกอบที่ 1, สุดท้ายและกลาง)
- โปรแกรมของคุณอาจเป็นโปรแกรมหรือฟังก์ชั่นที่สมบูรณ์
- คุณสามารถรับอินพุตโดยใช้ STDIN, บรรทัดคำสั่งหรือพารามิเตอร์ฟังก์ชัน หากใช้อินพุตสตริงอินพุตจะถูกคั่นด้วยช่องว่าง
- อินพุตอาจมีค่าทศนิยมและค่าลบ อย่างไรก็ตามจะไม่มีการซ้ำซ้อน
- คุณอาจส่งออกไปยัง STDOUT หรือโดยกลับมาจากฟังก์ชั่น
- ไม่มีฟังก์ชั่นการเรียงลำดับ (หรือการเรียงลำดับที่เกี่ยวข้อง) ในตัวหรือช่องโหว่มาตรฐาน
- รายการอาจมีความยาวโดยพลการ
โบนัส # 1: ในรายการหรือรายการย่อยที่มีความยาว <= 5 ให้ใช้การเรียงลำดับการแทรกเพื่อเร่งความเร็วให้เร็วขึ้น รางวัล: -15%
โบนัส # 2: หากภาษาของคุณรองรับการทำงานพร้อมกันให้เรียงลำดับรายการแบบขนาน หากคุณใช้การเรียงลำดับการแทรกในรายการย่อยการเรียงลำดับการแทรกสุดท้ายไม่จำเป็นต้องเป็นแบบขนาน บิวด์พูลในตัว / การกำหนดเวลาเธรดได้รับอนุญาต รางวัล: -15%
หมายเหตุ: ค่ามัธยฐานของสามกำลังสับสนบางคนดังนั้นนี่คือคำอธิบายความอนุเคราะห์จาก (อีกครั้ง) Wikipedia:
เลือกค่ามัธยฐานขององค์ประกอบแรกกลางและสุดท้ายของพาร์ติชันสำหรับเดือย
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟ คะแนนฐานเป็นไบต์ หากคุณได้รับหนึ่งโบนัสให้ลด 15% หากคุณทั้งคู่ได้รับส่วนลด 30% นั่นฟังดูคล้ายกับยอดขาย
นี่ไม่เกี่ยวกับการหาคำตอบที่สั้นที่สุดโดยรวม แต่จะสั้นที่สุดในแต่ละภาษา
และในตอนนี้ข้อมูลโค้ดลีดเดอร์บอร์ดที่ไร้ยางอาย
กระดานผู้นำ
สแต็คส่วนย่อยที่ด้านล่างของโพสต์นี้สร้างแคตตาล็อกจากคำตอบ a) เป็นรายการคำตอบสั้นที่สุดต่อภาษาและ b) เป็นลีดเดอร์บอร์ดโดยรวม
เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:
## Language Name, N bytes
โดยที่ N คือขนาดของการส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในพาดหัวโดยการตีพวกเขาผ่าน ตัวอย่างเช่น
## Ruby, <s>104</s> <s>101</s> 96 bytes
หากคุณต้องการรวมหลายตัวเลขไว้ในส่วนหัวของคุณ (เช่นเนื่องจากคะแนนของคุณคือผลรวมของไฟล์สองไฟล์หรือคุณต้องการแสดงรายการบทลงโทษการตั้งค่าสถานะของล่ามแยกต่างหาก) ตรวจสอบให้แน่ใจว่าคะแนนจริงเป็นตัวเลขสุดท้ายในส่วนหัว:
## Perl, 43 + 2 (-p flag) = 45 bytes
คุณยังสามารถตั้งชื่อภาษาให้เป็นลิงค์ซึ่งจะปรากฏในตัวอย่างข้อมูล:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes