#c #inversion
#c #инверсия
Вопрос:
Я пытаюсь ускорить работу моей программы подсчета инверсий, поскольку я постоянно получаю TLE. Я использовал C , и это мой код
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n;
int count = 0;
cin >> n;
int arr[n];
for(int i = 0; i < n; i )
{
cin >> arr[i];
}
for(int i = 0; i < n - 1; i )
{
for(int j = i 1; j < n; j )
if(arr[i] > arr[j])
{
count ;
}
}
cout << count;
}
Помогите, пожалуйста!
Комментарии:
1. найдите что-то вроде «алгоритм для подсчета инверсий» в вашем любимом движке для лучшего подхода?
2. Вероятно, вам следует использовать файл заголовка
#include<cstdio>
вместо#include <stdio.h>
.#include <stdio.h>
является заголовочным файлом C.. Или просто отбросьте его полностью.3. @GenoC или просто удалите это, поскольку оно не используется.
4. Ваш алгоритм работает медленно, потому что это тривиальный
O(n^2)
подход грубой силы. Существует стратегия сортировки слиянием, подобная стратегии «разделяй и властвуй», которая делает этоO(nlogn)
вовремя. Найдите его, он легко доступен в Интернете.5. @swag2198 значит, это совершенно новый алгоритм, которому я должен научить себя? Я действительно в замешательстве здесь .. D: