冒泡排序算法的原理如下:
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个,用到了for循环的内嵌(for循环里还有一个for循环),对于for循环的内嵌,比如
-
for(int pass=0;pass<=3;pass++) { for(int k=0;k<4;k++) { if(a[k]>a[k+1]) { int hold=a[k]; a[k]=a[k+1]; a[k+1]=hold; } }
首先,pass=0,然后满足循环条件,开始循环,然后k=0,循环条件是k<4,那么接下来当k=0走完一轮循环,进行的是k++,直到k>=4才退出这个循环转到最外层循环,而pass在这个过程是0,然后最外层循环启动,pass++,pass变成1,满足条件,里面的for循环进行,k又从0开始循环,就这样直到pass不满足循环条件
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[5];
for(int i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(int pass=0;pass<=3;pass++)
{
for(int k=0;k<4;k++)
{
if(a[k]>a[k+1])
{
int hold=a[k];
a[k]=a[k+1];
a[k+1]=hold;
}
}
}
for(int s=0;s<5;s++)
{
printf("%d ",a[s]);
}
return 0;
}
这是运行结果,输入你想排列的数(我设了5个数)
加油