1.8 冒泡排序

发布时间 2023-04-24 18:49:44作者: 自律小子丶

第一部曲:

从头到尾扫描数组的数,进行n-1轮,每次进行n-i次比较,因为经过前面i次,后面i个数已经确定了大小,不用再参与比较,如果后面的数大与前面的数就交换,第一轮结束后就把最大的数放在了最后,后面继续比较。需要注意两个数交换的时候要引入一个中间数,利用中间数才能进行交换。

第二部曲:

 

第三部曲:

for(i=1;i<N;i++)//进行n-1轮比较
{
for(j=0;j<N-i;j++)//每次比较n-i次
{
if(a[j+1]<a[j])//如果后面的数小,就交换
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}

第四部曲:

#include<iostream>
using namespace std;
const int N=10;//
int main()
{
int i,j,a[N],t;
for(i=0;i<N;i++)
cin>>a[i];//输入a数组中的值
for(i=1;i<N;i++)//进行n-1轮比较
{
for(j=0;j<N-i;j++)//每次比较n-i次
{
if(a[j+1]<a[j])//如果后面的数小于前面的数,就交换
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
int cnt=0;
for(i=0;i<N;i++)
{
cnt++;
cout<<a[i]<<" ";
if(cnt%5==0)//五次一行
cout<<endl;
}
return 0;

}