[ อัพเดทล่าสุด: โปรแกรมมาตรฐานและตัวต้านทานเบื้องต้นดูด้านล่าง]
ดังนั้นฉันต้องการทดสอบการแลกเปลี่ยนความเร็ว / ความซับซ้อนด้วยแอปพลิเคชันแบบคลาสสิก: การเรียงลำดับ
เขียนฟังก์ชัน ANSI C ที่เรียงลำดับอาร์เรย์ของจำนวนจุดลอยตัวตามลำดับที่เพิ่มขึ้น
คุณไม่สามารถใช้ใด ๆห้องสมุดโทรระบบ multithreading หรือ ASM แบบอินไลน์
ผลงานตัดสินจากสององค์ประกอบ: ความยาวโค้ดและประสิทธิภาพ การให้คะแนนดังนี้: รายการจะถูกจัดเรียงตามความยาว (บันทึกของ #characters ที่ไม่มีช่องว่างเพื่อให้คุณสามารถจัดรูปแบบบางส่วน) และตามประสิทธิภาพ (บันทึกของ #seconds มากกว่าเกณฑ์มาตรฐาน) และแต่ละช่วงเวลา [ดีที่สุดเลวร้ายที่สุด] 0,1] คะแนนรวมของโปรแกรมจะเป็นค่าเฉลี่ยของคะแนนสองมาตรฐาน คะแนนต่ำสุดชนะ หนึ่งรายการต่อผู้ใช้
การเรียงลำดับจะต้องมี (ในที่สุด) อยู่ในสถานที่ (เช่นอาร์เรย์อินพุตจะต้องมีค่าเรียงในเวลากลับ) และคุณต้องใช้ลายเซ็นต่อไปนี้รวมถึงชื่อ:
void sort(float* v, int n) {
}
ตัวอักษรที่จะถูกนับ: ตัวที่อยู่ในsort
ฟังก์ชั่นรวมลายเซ็นรวมถึงฟังก์ชั่นเพิ่มเติมที่เรียกได้ (แต่ไม่รวมถึงรหัสทดสอบ)
โปรแกรมจะต้องจัดการกับค่าตัวเลขใด ๆ ของfloat
และอาร์เรย์ของความยาว> = 0 สูงสุด 2 ^ 20
ฉันจะเสียบsort
และการอ้างอิงลงในโปรแกรมทดสอบและรวบรวม GCC (ไม่มีตัวเลือกแฟนซี) ฉันจะป้อนอาร์เรย์จำนวนมากเข้าไปในนั้นตรวจสอบความถูกต้องของผลลัพธ์และเวลาทำงานทั้งหมด การทดสอบจะดำเนินการใน Intel Core i7 740QM (Clarksfield) ภายใต้ Ubuntu 13
ความยาวของอาร์เรย์จะครอบคลุมช่วงที่อนุญาตทั้งหมดโดยมีความหนาแน่นสูงกว่าของอาร์เรย์แบบสั้น ค่าจะสุ่มโดยมีการกระจายไขมันหาง (ทั้งในช่วงบวกและลบ) องค์ประกอบที่ซ้ำจะรวมอยู่ในการทดสอบบางอย่าง
โปรแกรมการทดสอบที่มีอยู่ที่นี่: https://gist.github.com/anonymous/82386fa028f6534af263นำเข้าส่งเป็น
user.c
จำนวนกรณีทดสอบ ( TEST_COUNT
) ในการวัดประสิทธิภาพจริงจะเป็น 3,000 โปรดให้ข้อเสนอแนะใด ๆ ในความคิดเห็นคำถาม
กำหนดเวลา: 3 สัปดาห์ (7 เมษายน 2557, 16:00 GMT) ฉันจะโพสต์มาตรฐานใน 2 สัปดาห์
อาจแนะนำให้โพสต์ใกล้ถึงกำหนดเวลาเพื่อหลีกเลี่ยงการมอบรหัสของคุณให้กับคู่แข่ง
ผลการทดสอบเบื้องต้นตามที่ตีพิมพ์มาตรฐาน:
นี่คือผลการทดสอบบางส่วน คอลัมน์สุดท้ายแสดงคะแนนเป็นเปอร์เซ็นต์ยิ่งดียิ่งขึ้นวางจอห์นนี่เคจไว้ก่อน อัลกอริทึมที่เป็นคำสั่งของขนาดช้ากว่าที่เหลือถูกเรียกใช้บนชุดย่อยของการทดสอบและการประมาณเวลา มี C ของตัวเองqsort
สำหรับการเปรียบเทียบ (จอห์นนี่เร็วกว่า!) ฉันจะทำการเปรียบเทียบขั้นสุดท้ายในเวลาปิด