提交时间:2024-03-03 09:42:05

运行 ID: 134849

#include<iostream> using namespace std; int n,a[100001],ans[100004]; /* 优化冒泡排序,小-》大 优化点:如果数组已经有序,可无须判断,直接输出 */ void betterbubblesort() { bool flag = false; //数组初始化无序 for (int i = n; i >= 2; i--) { //从前往后冒泡,将最大值移到最后,无序才继续 flag = true; //做个标记,如果该标记被破坏则说明数组无序 for (int j = 1; j < i; j++) { if (a[j] > a[j + 1]) { swap(a[j],a[j+1]); ans[j]++; ans[j+1]++; flag = false; } } if(flag == true){ break; } } } int main(){ cin >> n; for(int i = 1;i <= n;i++){ cin >> a[i]; ans[i] = 1; } long long re = 0; betterbubblesort(); for(int i = 1;i <= n;i++){ re += ans[i]; } cout << re; return 0; }