C++ 冒泡排序:用 iostream 库解决结晶交换问题
使用 C++ 冒泡排序解决结晶交换问题
球球他们一共 n 个人,站成一排,每个人手里拿着一块星耀结晶。他们从左往右开始,每个人把自己手中的结晶与下一个人进行比较,如果自己手中的结晶比右边的人小,就互相交换结晶。禾木想知道,一轮结束以后,每个人手里结晶的大小是多少?(一轮指的是从第 1 个人开始,到第 n-1 个人为止,每个人都和下一个人进行一次比较。)
提示: 从第 1 个数遍历到第 n-1 个数,如果当前的数 a[i] 小于后面的数 a[i+1] 就交换。
输入: 共两行。
第一行为一个整数 n (1 < n < 100),表示人数。
第二行为 n 个整数,表示每个人的结晶大小。
输出: 一行 n 个整数,为一轮交换结束以后,每个人的结晶大小,相邻数字之间用空格隔开。
输入样例:
8
3 2 7 1 8 5 2 3
输出样例:
1 2 2 3 3 5 7 8
可以使用冒泡排序算法来解决这个问题。冒泡排序的基本思想是,从第一个元素开始,依次比较相邻的两个元素,如果前面的元素大于后面的元素,则交换它们的位置。这样一轮比较下来,最大的元素会被交换到最后的位置。然后再从第一个元素开始,依次进行比较和交换,直到所有的元素都排序完成。
在这个问题中,我们可以使用两个循环来实现冒泡排序。外层循环控制排序的轮数,内层循环用于比较相邻的两个元素并交换它们的位置。
以下是完整的代码实现:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a[100];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
for (int i = 0; i < n-1; i++)
{
for (int j = 0; j < n-i-1; j++)
{
if (a[j] > a[j+1])
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
return 0;
}
输入样例:
8
3 2 7 1 8 5 2 3
输出样例:
1 2 2 3 3 5 7 8
原文地址: https://www.cveoy.top/t/topic/qwla 著作权归作者所有。请勿转载和采集!