คำชี้แจงปัญหา
กำหนดอาร์เรย์ขององค์ประกอบที่แตกต่างกัน N ให้ค้นหาจำนวนการแลกเปลี่ยนขั้นต่ำที่จำเป็นในการจัดเรียงอาร์เรย์
ตัวอย่าง
หากอาร์เรย์เป็น {4, 2, 1, 3} จำเป็นต้องมีการสลับ 2 ครั้ง
- สลับ arr[0] กับ arr[2]
- สลับ arr[2] กับ arr[3}
อัลกอริทึม
<ก่อน>1. สร้างเวกเตอร์ของคู่ใน C ++ โดยมีองค์ประกอบแรกเป็นอาเรย์และองค์ประกอบที่สองเป็นดัชนีอาร์เรย์2 จัดเรียงเวกเตอร์ของคู่ตามองค์ประกอบแรกของคู่3. ข้ามเวกเตอร์และตรวจสอบว่าดัชนีที่จับคู่กับค่านั้นถูกต้องหรือไม่ ถ้าไม่ใช่ ให้สลับไปเรื่อยๆ จนกว่าองค์ประกอบจะถูกวางอย่างถูกต้องและนับจำนวนการสลับต่อไปตัวอย่าง
#includeใช้เนมสเปซ std;int getMinSwaps(int *arr, int n) { vector > vec(n); สำหรับ (int i =0; i เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ดังต่อไปนี้
ผลลัพธ์
สวอปขั้นต่ำ =2