冒泡排序

来源:互联网 发布:网络很卡用英语怎么说 编辑:程序博客网 时间:2024/06/05 04:47

简单冒泡排序

#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