未优化版本时间复杂度为O(n^2)主要是在求初始数列的逆序数值。 #include <iostream> using namespace std; int data[5005]; int main() { int i, j; int n; while (scanf("%d", &n) != EOF) { for (i = 0; i < n; ++i) { scanf("%d", &data[i]); } int temp; int min = 0; for (i = 0; i < n; ++i) { for (j = 0; j < i; ++j) { if (data[j] > data[i]) { min++; } } } temp = min; for(i = 0;i < n - 1; i++) { temp = temp - data[i] + (n - data[i] - 1); if(temp < min) min = temp; } cout << min << endl; } return 0; }