Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
134849 | YYYY | 学生排队 | C++ | 解答错误 | 0 | 1000 MS | 1024 KB | 961 | 2024-03-03 09:42:05 |
#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; }