冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。
核心为两个嵌套循环。
简单的给出一组数据,从小到大将他们排序。
#include<iostream>
using namespace std;
int const M=1001;
int a[M];
int main()
{
int N,t;
cin>>N;
for(int i=1;i<=N;i++)
cin>>a[i];
for(int i=1;i<N;i++)
for(int j=1;j<N;j++)
{
if(a[j+1]<a[j])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
for(int i=1;i<=N;i++)
cout<<a[i]<<" ";
return 0;
}
现在有某几个学生的考试成绩,要求从大到小排序,还要带上姓名(或者学号等)。
#include<iostream>
#define M 1001
using namespace std;
struct student
{
char name[100];
double score;
};
int main()
{
struct student a[100],t;
int N;
cin>>N;
for(int i=1;i<=N;i++)
{
cin>>a[i].name ;
cin>>a[i].score;
}
for(int i=1;i<N;i++)
for(int j=1;j<N;j++)
{
if(a[j+1].score <a[j].score)
{
t=a[j+1];
a[j+1] =a[j];
a[j]=t;
}
}
for(int i=1;i<=N;i++)
{
cout<<a[i].name <<" "<<a[i].score<<endl;
}
return 0;
}