3833: 冒泡排序步骤(语法周赛 Round 29(简单场))

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:3 解决:2

题目描述

题目描述

33DAI 写了一段冒泡排序的代码:

#include <bits/stdc++.h> using namespace std; 

const int MAXN = 1000; int n; int a[MAXN + 5];

int main() { 

ios::sync_with_stdio(false); cin.tie(0); 

cin >> n; for (int i = 1; i <= n; i++)

cin >> a[i];

bool flag = true;

while (flag) {

flag = false; for (int i = 1; i <= n - 1; i++) 

if (a[i] > a[i + 1]) {

swap(a[i], a[i + 1]); 

flag = true; }

} 

for (int i = 1; i <= n; i++) 

cout << a[i] << " "; 

return 0; 

}

给你输入的  及 1。请你按顺序,打印这个代码在执行时的每一次 if 语句的比较以及 swap 语句的交换分别操作了哪两个元素。格式如下:

  • cmp,a[{1}],a[{2}]{1} 和 {2} 为两个整数,表示当前比较的两个元素的下标,必须保证 {1} < {2}
  • swp,a[{1}],a[{2}]{1} 和 {2} 为两个整数,表示当前交换的两个元素的下标,必须保证 {1} < {2}

输入

第一行一个整数 

第二行  个整数 1

输出

输出若干行,即按顺序的所有排序过程中的比较与交换。

样例输入 复制

5
3 2 5 1 4

样例输出 复制

cmp,a[1],a[2]
swp,a[1],a[2]
cmp,a[2],a[3]
cmp,a[3],a[4]
swp,a[3],a[4]
cmp,a[4],a[5]
swp,a[4],a[5]
cmp,a[1],a[2]
cmp,a[2],a[3]
swp,a[2],a[3]
cmp,a[3],a[4]
cmp,a[4],a[5]
cmp,a[1],a[2]
swp,a[1],a[2]
cmp,a[2],a[3]
cmp,a[3],a[4]
cmp,a[4],a[5]
cmp,a[1],a[2]
cmp,a[2],a[3]
cmp,a[3],a[4]
cmp,a[4],a[5]

提示

数据规模与约定

对于 100% 的数据,1100109109

来源/分类