解题思路:用数组储存数据,两个for循环遍历数据,比较大小交换位置

注意事项:会用到new获取数组大小

参考代码:

#include <iostream>

using namespace std;

void swap(int *x, int *y);

int main()

{

int n;

while (cin >> n && n >= 1 && n <= 100)//省时间,结合条件n的取值范围

{

int *a = new int[n];//获取未知数组大小

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

cin >> a[i];

for (int j = 0; j < n; j++)

{

for (int m = 0; m < n - 1; m++)

if (a[m] > a[m + 1])

swap(&a[m], &a[m + 1]);//用两个for循环遍历,将序列靠前的较大数后移

}

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

{

cout << a[i] << ' ';

}

cout << endl;

}

return 0;

}


void swap(int* x, int* y)

{

int t;

t = *x;

*x = *y;

*y = t;

}


点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

灵笼 7月前 回复TA
@灵笼 这个也可以
灵笼 7月前 回复TA
#include <iostream>
using namespace std;
void swap(int *x, int *y);
void sort(int* a, int* b);
int main()
{
	int n;
	while (cin >> n && n >= 1 && n <= 100)
	{
		int *a = new int[n];
		for (int i = 0; i < n; i++)
			cin >> a[i];
		int p = 0;
		while (p < n)
		{
			p++;
			for (int m = 0; m < n - 1; m++)
				sort(&a[m], &a[m + 1]);
		}
		for (int i = 0; i < n; i++)
		{
			cout << a[i] << ' ';
		}
		cout << endl;
	}
	
	return 0;
}
void sort(int* a, int* b)
{
	if (*a < *b)
		return;
	if (*a == *b)
		return;
	if(*a>*b)
		swap(*a, *b);
}
void swap(int* x, int* y)
	{int t;
	t = *x;
	*x = *y;
	*y =t}