Back2dos ได้กล่าวทั้งหมดฉันจะพยายามอธิบายจุดที่ฉันคิดว่าสำคัญที่สุด:
การจัดเรียง Radix สามารถเรียงลำดับค่าดั้งเดิมที่แท้จริงที่มีอยู่ภายในอาร์เรย์โดยยึดตามรูปแบบเลขฐานสอง ในสถานการณ์วิศวกรรมซอฟต์แวร์ที่เกิดขึ้นจริงในโลกนี้คดีนี้แทบจะไม่เคยเกิดขึ้นเลย สิ่งที่เรามักจะทำบ่อยกว่านั้นคือการเรียงลำดับของโครงสร้างข้อมูลที่ซับซ้อนมากขึ้น (ไม่ใช่แบบดั้งเดิม) และบางครั้งเราเรียงลำดับอาร์เรย์ของดัชนีไปยังเอนทิตีอื่น ๆ
ตอนนี้อาร์เรย์ของดัชนีไปยังเอนทิตีอื่น ๆ เป็นจริงแล้วอาร์เรย์ของ primitives แต่ลำดับการจัดเรียงนั้นจัดทำโดยอินเตอร์เฟสตัวเปรียบเทียบ (และ / หรือผู้รับมอบอำนาจใน C #) ซึ่งเปรียบเทียบดัชนีไม่ใช่ แต่เอนทิตีดัชนีโดยดัชนี ดังนั้นการเรียงลำดับจึงไม่มีความสัมพันธ์ใด ๆ กับลำดับของค่าดั้งเดิมและการเรียงลำดับแบบ Radix ไม่มีประโยชน์อย่างยิ่งสำหรับสถานการณ์นี้
ตัวอย่าง:
เรามีชุดของสตริง: [0] = "Mike", [1] = "Albert", [2] = "Zoro" จากนั้นเราจะประกาศอาร์เรย์ของดัชนีกับสตริงเหล่านั้น: [0] = 0, [1] = 1, [2] = 2 จากนั้นเราจัดเรียงแถวลำดับของดัชนีผ่านตัวเปรียบเทียบซึ่งไม่เปรียบเทียบดัชนีด้วยตนเอง แต่เป็นสตริงจริงที่อ้างอิงโดยดัชนีเหล่านี้ หลังจากเรียงลำดับแล้วอาร์เรย์ผลลัพธ์ของดัชนีจะมีลักษณะดังนี้: [0] = 1, [1] = 0, [2] = 2 อย่างที่คุณเห็นลำดับการจัดเรียงนี้ไม่เกี่ยวข้องกับรูปแบบไบนารีของค่าที่มีอยู่ในอาเรย์ แต่โดยการสำรวจอาเรย์ของดัชนีนี้และดึงแต่ละสตริงที่เกี่ยวข้องเราจะไปที่สตริงตามลำดับที่เรียง