ในที่นี้ เราได้รับตัวเลข N หน้าที่ของเราคือค้นหาการเปลี่ยนแปลงที่ไม่เรียงลำดับของ N โดยใช้ Alexander Bogomolny's UnOrdered Permutation Algorithm
มาคุยกันเรื่องการเรียงสับเปลี่ยนกันก่อน
การเปลี่ยนแปลง คือจำนวนวิธีที่รายการในชุดสามารถเรียงลำดับได้ไม่ซ้ำกันเรียกว่าการเรียงสับเปลี่ยน
ตัวอย่าง − การเรียงสับเปลี่ยนของ {4,9,2} จะเป็น {4,9,2}, {4,2,9}, {9,4,2}, {9,2,4}, {2,4,9 } และ {2,9,4}.
การเรียงสับเปลี่ยนพบการใช้งานในการกำหนดเครือข่ายสวิตชิ่งในเครือข่ายคอมพิวเตอร์ การประมวลผลแบบขนาน และยังใช้ในอัลกอริธึมการเข้ารหัสที่หลากหลายด้วย
Alexander Bogomolny's Unordered Permutation Algorithm
อัลกอริทึมนี้คำนวณการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของจำนวนธรรมชาติ N ตัวแรก จากจำนวน N การเรียงสับเปลี่ยนจะถูกคำนวณจาก 1 ถึง N
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล
N =3
ผลผลิต
1,2,3; 1,3,2; 2,1,3; 2,3,1; 3,1,2; 3,2,1
อัลกอริทึม
<ก่อน>1. สร้างฟังก์ชันด้วยอาร์เรย์ หมายเลข N และแอสพารามิเตอร์จำนวนเต็ม k2 เริ่มต้นระดับ เมื่อระดับเพิ่มขึ้นจะเปลี่ยนค่าที่เหลือ3 เมื่อถึงเงื่อนไขการเรียกซ้ำค่าทั้งหมดจะถูกพิมพ์ตัวอย่าง
โปรแกรมแสดงการใช้งานอัลกอริทึมของเรา -
#includeใช้เนมสเปซ std;int ระดับ =-1;void AlexanderBogomolyn(การเรียงสับเปลี่ยนแบบ int [], int N, int k) { ระดับ =ระดับ + 1; พีชคณิต[k] =ระดับ; ถ้า (ระดับ ==N) { สำหรับ (int i =0; i ผลลัพธ์
การเรียงสับเปลี่ยนทั้งหมดคือ :1 2 3 41 2 4 31 3 2 41 4 2 31 3 4 21 4 3 22 1 3 42 1 4 33 1 2 44 1 2 33 1 4 24 1 3 22 3 1 42 4 1 33 2 1 44 2 1 33 4 1 24 3 1 22 3 4 12 4 3 13 2 4 14 2 3 13 4 2 14 3 2 1