简单冒泡排序
#include <iostream>
using namespace std;
const int N=20000+100;
int main()
{
int n, i, j, a[N], t;
cin >> n;
for(i=1; i<=n; i++)
cin >> a[i];
for(i=1; i<=n-1; i++)
for(j=1; j<=n-i; j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=1; i<=n-1; i++)
cout << a[i] << " ";
cout << a[n] << endl;
return 0;
}
也可以应用于结构体
#include <stdio.h>
struct student
{
char name[21];
char score;
};//这里创建了一个结构体用来存储姓名和分数
int main()
{
struct student a[100],t;
int i,j,n;
scanf("%d",&n); //输入一个数n
for(i=1; i<=n; i++) //循环读入n个人名和分数
scanf("%s %d",a[i].name,&a[i].score);
//按分数从高到低进行排序
for(i=1; i<=n-1; i++)
{
for(j=1; j<=n-i; j++)
{
if(a[j].score<a[j+1].score)//对分数进行比较
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=1; i<=n; i++) //输出人名
printf("%s\n",a[i].name);
return 0;
}
测试数据
5
huhu 5
haha 3
xixi 5
hengheng 2
gaoshou 8