问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
#include <iostream>
#include <algorithm>
using namespace std;
int a[200];
int cmp(int a,int b)
{
return a<b;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n,cmp);
cout<<a[0];
for(int i=1;i<n;i++)
{
cout<<" "<<a[i];
}
return 0;
}
sort函数中的比较函数cmp()
即void sort( iterator start, iterator end, StrictWeakOrdering cmp );
bool cmp(int a,int b)
{
return a<b;
}//表示从小到大输出排列
sort函数头文件为:#include <algorithm>,一定要记得带上。
或者可以用咕噜咕噜的泡泡排序办法,方法示例如下:
void bubblesort(int a,int n)//冒泡排序函数
{
for(int i=0; i<n-1; i++)//先计算n-1趟排序
{
for(int j=0; j<n-1; j++)
{
if(a[k]>a[k+1])
{
int temp;//临时变量
temp=a[k];
a[k]=a[k+1];//交换变量
a[k+1]=temp;
}
}
}
}
******************************************
//或者用swap函数进行交换
if (a[j]<a[j-1]) //从后面往前两两判断
{
swap(a[j],a[j-1]); //交换
}