การเรียงลำดับไม่สมเหตุสมผลสำหรับอาร์เรย์ 2 มิติ ... หรือไม่
งานของคุณคือการใช้กริดอินพุตและใช้อัลกอริธึมคล้ายการเรียงลำดับกับฟองจนกว่าค่าทั้งหมดในกริดจะไม่ลดลงจากซ้ายไปขวาและบนลงล่างตลอดทุกแถวและคอลัมน์
อัลกอริทึมทำงานดังต่อไปนี้:
- แต่ละรอบจะไปทีละแถวจากบนลงล่างเปรียบเทียบ / สลับแต่ละเซลล์ด้วยขวาและข้างล่างเพื่อนบ้าน
- หากเซลล์มีมากกว่าหนึ่งในสิทธิ์และต่ำกว่าเพื่อนบ้านให้สลับกับเซลล์ที่มีมากกว่านั้น
- หากเซลล์มีขนาดใหญ่กว่าทั้งด้านขวาและด้านล่างให้สลับกับเพื่อนบ้านที่เล็กกว่า
- หากเซลล์มีขนาดใหญ่กว่าทั้งด้านขวาและด้านล่างของเพื่อนบ้านซึ่งมีค่าเท่ากันให้สลับกับเพื่อนบ้านด้านล่าง
- หากเซลล์ไม่ใหญ่กว่าทั้งด้านขวาและด้านล่างเพื่อนบ้านไม่ทำอะไรเลย
- ทำต่อไปจนกว่าจะไม่มีการแลกเปลี่ยน นี่จะเป็นเมื่อทุกแถวและคอลัมน์อยู่ในลำดับจากซ้ายไปขวาและบนลงล่าง
ตัวอย่าง
4 2 1
3 3 5
7 2 1
แถวแรกของบัตรผ่านจะสลับ 4 และ 2 จากนั้น 4 กับ 1
2 1 4
3 3 5
7 2 1
เมื่อเราได้ 3 ตรงกลางมันจะถูกสลับกับ 2 ด้านล่าง
2 1 4
3 2 5
7 3 1
จากนั้นสลับทั้ง 5 ด้วย 1 ด้านล่าง
2 1 4
3 2 1
7 3 5
แถวสุดท้ายของบัตรผ่านชุดแรกจะเลื่อนหมายเลข 7 ไปทางขวา
2 1 4
3 2 1
3 5 7
จากนั้นเรากลับไปที่แถวบนสุดอีกครั้ง
1 2 1
3 2 4
3 5 7
และดำเนินการต่อแถว ...
1 2 1
2 3 4
3 5 7
... จนกว่ากริดจะ "เรียงลำดับ"
1 1 2
2 3 4
3 5 7
ตัวอย่างอื่น
3 1 1
1 1 1
1 8 9
กลายเป็น
1 1 1
1 1 1
3 8 9
ค่อนข้างมากกว่า
1 1 1
1 1 3
1 8 9
เนื่องจากการสลับลงจะมีลำดับความสำคัญเมื่อทั้งด้านขวาและด้านล่างของเพื่อนบ้านของเซลล์เท่ากัน
การดำเนินการอ้างอิงขั้นตอนโดยขั้นตอนที่สามารถพบได้ที่นี่
กรณีทดสอบ
5 3 2 6 7 3 1 0
3 2 1 9 9 8 3 0
3 2 2 8 9 8 7 6
กลายเป็น
0 0 1 1 2 2 3 6
2 2 3 3 6 7 8 8
3 3 5 7 8 9 9 9
2 1 2 7 8 2 1 0
2 2 2 2 3 2 1 0
1 2 3 4 5 4 3 2
9 8 7 6 5 4 3 6
6 5 4 3 2 2 1 0
กลายเป็น
0 0 0 1 1 1 2 2
1 1 2 2 2 2 2 2
2 2 2 2 3 3 3 3
3 4 4 4 4 5 6 6
5 5 6 7 7 8 8 9
กฎระเบียบ
- คุณสามารถใช้กริดอินพุตในรูปแบบที่สะดวก
- คุณอาจคิดว่าค่ากริดเป็นจำนวนเต็มที่ไม่เป็นลบทั้งหมดในช่วง 16 บิตที่ไม่ได้ลงนาม (0-65535)
- คุณอาจสมมติว่ากริดเป็นรูปสี่เหลี่ยมผืนผ้าที่สมบูรณ์แบบและไม่ใช่อาร์เรย์แบบขรุขระ กริดจะต้องมีอย่างน้อย 2x2
- ถ้าคุณใช้อัลกอริทึมของการเรียงลำดับอื่นคุณจะต้องจัดหาหลักฐานว่ามันจะเสมอผลิตเพื่อส่งผลเช่นเดียวกับแบรนด์นี้โดยเฉพาะของฟอง 2D เรียงลำดับไม่ว่าสิ่งที่เข้าเป็น ฉันคาดหวังว่านี่จะเป็นข้อพิสูจน์ที่ไม่สำคัญดังนั้นคุณอาจดีกว่าโดยใช้อัลกอริทึมที่อธิบายไว้
มีความสุขในการเล่นกอล์ฟ!