6 条题解
-
0
这题不难,写个冒泡排序,每交换一次就将计数变量+1,最后输出计数变量
冒泡排序:从第一项开始,依次往后遍历,如果第i项>第i+1项,那么交换这两项的位置,总共遍历n轮(其实是n-1轮,但n轮也没有影响)
#include <iostream> using namespace std; int main() { int n,ans = 0; cin >> n; int a[1005]; for(int i = 0;i < n;i++) cin >> a[i]; for(int i = 0;i < n;i++) { for(int j = 0;j < n - 1;j++) { if(a[j] > a[j + 1]) { swap(a[j],a[j + 1]); ans++; } } } cout << ans; return 0; }
-
0
解析:
在冒泡排序过程中,每次比较相邻元素交换时,就累加交换次数。
题解
#include <bits/stdc++.h> using namespace std; int n, ans; int a[1005]; int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; ans = 0; // 最多执行 n-1 轮冒泡 for (int i = 1; i <= n - 1; i++) // 执行一轮冒泡操作 for (int j = 1; j <= n - 1; j++) // 比较相邻元素 if (a[j] > a[j + 1]) { swap(a[j], a[j + 1]); ans++; // 交换次数计数 } cout << ans; return 0; }
-
-1
#include <iostream> using namespace std; int n, a[1005], sum; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i < n; i++) { for (int j = 1; j <= n - i; j++) { if (a[j] > a[j + 1]) { int k = a[j]; a[j] = a[j + 1]; a[j + 1] = k; sum++; } } } cout << sum; return 0; }
-
-1
这题很简单,先看代码,再复制:
#include <iostream> #include <algorithm> // swap()函数的头文件; using namespace std; int a[1001], n, sum = 0; //定义全局变量数组a,这样我们就不用给数组a赋值了; int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; //输入整数; // 冒泡排序; for (int i = 1; i <= n - 1; i++) { for (int j = 1; j <= n - 1; j++) { if (a[j] > a[j + 1]) { swap(a[j], a[j + 1]); //交换两数的函数swap()(别忘写头文件); sum++; // 每交换一次就将计数变量加一; } } } cout << sum; // 输出; return 0; }
思路:冒泡排序时,两数每交换一次,就将sum(计数变量)加一;
记得👍 哦
- 1
信息
- ID
- 362
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 716
- 已通过
- 346
- 上传者