冒泡排序的基本思想:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换
将12、35、99、18、76
第一趟
1和2比较:35、12、99、18、76
2和3比较:35、99、12、18、76
3和4比较:35、99、18、12、76
4和5比较:35、99、18、76、12
第二趟
1和2比较:99、35、18、76、12
2和3比较:99、35、18、76、12
3和4比较:99、35、76、18、12
第三趟:
1和2比较:99、35、76、18、12
2和3比较:99、76、35、18、12
第四趟
…
已完成排序但是还是要进行第4趟
每1趟能确定一个数归位
有n个数进行排序,只需将n-1个数归位
从大到小
#include "stdio.h"
int main(){
int a[100],i,j,t,n;
scanf("%d",&n); //输入排序的个数
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++) //比较几趟
{
for(j=0;j<n-i-1;j++) //从第一位开始比较到最后一个未归位的数
{
if(a[j]<a[j+1]) //比较大小并交换
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
#include "stdio.h"
int main(){
int a[1000],i,j,t,n;
scanf("%d",&n); //输入排序的个数
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++) //比较几趟
{
for(j=0;j<n-i-1;j++) //从第一位开始比较到最后一个未归位的数
{
// if(a[j]
if(a[j]>a[j+1]) //比较大小并交换
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}