目录
1.题目信息
试题编号:BASIC-13
试题名称:数列排序
关键字: 数组 排序
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
2.问题分析
数组排序。
3.基本思路
数列定义为int类型一维数组,使用排序后遍历输出即可。
4.代码执行
冒泡排序
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
t = a[j + 1];
a[j + 1] = a[j];
a[j] = t;
}
}
}
5.源代码
#include<iostream>
using namespace std;
int main()
{
int n, a[200];
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
int t = 0;
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
t = a[j + 1];
a[j + 1] = a[j];
a[j] = t;
}
}
}
for (int i = 0; i < n - 1; i++)
{
cout << a[i] << " ";
}
cout << a[n - 1] << endl;
return 0;
}
6.小结
- 掌握冒泡排序,最基础的一种排序类型。
- swap函数:交换函数
好处:不用担心交换变量精度的缺失,无需构造临时变量,不会增加空间复杂度,swap 包含在命名空间std 里面。
swap(a,b);(交换两个数)
swap(a[i] = b[j]);(交换两个位置上的变量)
则冒泡排序可改为:
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
swap(a[j], a[j + 1]);
}
}
}
- sort函数:用于C++中,对给定区间所有元素进行排序。头文件是#include 。
(1)第一个参数first:是要排序的数组的起始地址。
(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)
(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。
升序:sort(begin,end,less());
降序:sort(begin,end,greater()).
拓展链接:C++sort()函数用法讲解总结