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

จำนวนสวอปขั้นต่ำที่จำเป็นในการจัดเรียงอาร์เรย์ใน C++


คำชี้แจงปัญหา

กำหนดอาร์เรย์ขององค์ประกอบที่แตกต่างกัน 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