在nlogn中计数反转
Count inversions in nlogn
本文关键字:nlogn 更新时间:2023-10-16
考虑一个数组'a'。如果a[i]> a[j]且i 这有5个"逆": 我的任务是编写一个c++程序来计算数组中"逆"对的数量,运行时间缩放为O(n logn) 我的代码运行时间为O(n²): 如何将其改进为O(n logn)?int a[5] = {2, 3, 8, 6, 1}
(8,6) (2,1) (3,1) (8,1) (6,1)
int nghichdao(int a[], int n)
{
int d = 0;
for (int j = 1;j < n;j++)
for (int i = 0;i < j;i++)
if (a[i] > a[j]) {
d++;
cout << "(" << a[i] << "," << a[j] << ")" << endl;
}
return d;
}
使用归并排序实现N*logN的反转计数。参考此http://www.geeksforgeeks.org/counting-inversions/