冒泡排序 (Ver. I)
时间限制: 1 Sec 内存限制: 128 MB
题目描述
给定一个包含从0到n-1各一次的数组,若使用冒泡排序将其排为升序,问其中需要进行多少次交换
输入
测试数据有多组,
每组由两行组成:第一行包含正整数n(n <= 5000); 下一行包含从0到n-1的n个整数的序列。
输出
对于每组测试数据,
输出交换次数
样例输入
1 2 | 10 1 3 6 9 0 8 5 7 4 2 |
样例输出
1 | 22
|
提示
解决方案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <iostream> #include <vector> int main() { int size; while (std::cin >> size) { std::vector<int> vector(static_cast<size_t>(size)); for (int i = 0; i < size; ++i) { std::cin >> vector[i]; } int count = 0; for (int i1 = 0; i1 < vector.size() - 1; ++i1) { for (int i2 = 0; i2 < vector.size() - 1 - i1; ++i2) { if (vector[i2] > vector[i2 + 1]) { std::swap(vector[i2], vector[i2 + 1]); count += 1; } } } std::cout << count << std::endl; } return 0; } |