啊哈!算法—冒泡排序

来源:互联网 发布:陈自强 知乎 编辑:程序博客网 时间:2024/06/16 12:05

冒泡排序:

   每一次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。

  首先比较第一位和第二位,然后第二位和第三位,然后第四位和第五位。。。最后最小的一个数已经归位了。

  再进行下一轮。。。

如果有n个数,只需将n-1个数进行归位,也就是说,要进行n-1趟操作。

例如:

将学生按照分数高低进行排序后,输出其姓名。

#include <iostream>using namespace std;struct student{    char name[21];    int score;} a[100],t; //创建一个结构体存储姓名和分数int main(){    int i,j,n;    cin>>n;   //输入一个数表示人数    for(i=1; i<=n; i++)   //循环输入n个人的信息        cin>>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;            }        }    }    cout<<"按分数排序:"<<endl;    for(i=1;i<=n;i++)             //输出人名        cout<<a[i].name<<endl;    cout<<endl;    return 0;}

运行结果:

注意:

冒泡排序,算法时间比较高,空间占用不大。

0 0