การผกผันการนับหมายถึงจำนวนสวิตช์ที่จำเป็นในการจัดเรียงอาร์เรย์ จำนวนการผกผัน =0 เมื่อจัดเรียงอาร์เรย์ จำนวนการผกผัน =สูงสุด เมื่ออาร์เรย์เรียงลำดับย้อนกลับ
ให้เราพัฒนาโปรแกรม C++ เพื่อนับการผกผันในอาร์เรย์
อัลกอริทึม
Begin Function CountInversionArray has arguments a[], n = number of elements. initialize counter c := 0 for i in range 0 to n-1, do for j in range (i + 1) to n, do if a[i] > a[j], then increase the count by 1 done done End.
โค้ดตัวอย่าง
#include<iostream> using namespace std; int CountInversionArray(int a[], int n) { int i, j, c = 0; for(i = 0; i < n; i++) { for(j = i+1; j < n; j++) if(a[i] > a[j]) c++; } return c; } int main() { int n, i; cout<<"\nEnter the number of elements: "; cin>>n; int a[n]; for(i = 0; i < n; i++) { cout<<"Enter element "<<i+1<<": "; cin>>a[i]; } cout<<"\nThe number of inversion in the array: "<<CountInversionArray(a, n); return 0; }
ผลลัพธ์
Enter the number of elements: 5 Enter element 1: 3 Enter element 2: 2 Enter element 3: 7 Enter element 4: 6 Enter element 5: 1 The number of inversion in the array: 6