Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

อัลกอริธึมการเปลี่ยนลำดับแบบไม่เรียงลำดับของ Alexander Bogomolny ใน C ++


ในที่นี้ เราได้รับตัวเลข 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