冒泡法
对长度N的一维数组中的元素进行从小到大的顺序进行排序。
用i表示趟,以154286为例,i从0开始取值,第0趟,通过依次将相邻两个数比较交换,选出一个最大的数字8排到最后,即142568,第1趟,同理得124568。
最糟糕的情况是完全按从大到小排序转换为从小到大排序,那么这种情况下,除最后一趟排出两个元素,其余每趟排出一个元素,N个元素排序需要N-1趟排序。
举个例子54321,第0趟,43215,第1趟,32145,第2趟,21345,第3趟,12345。所以一共用了4趟。
所以趟数i的取值范围是0≤i<N-2(注意这里i的取值是从零开始)
相邻元素表示为a[j]和a[j+1],每趟中j的起始值是0,终值因所在趟而异为N-1-i,因为每排出一个最大的下一趟都不用再进行比较这个数
举个例子a[0]=4,a[1]=3,a[2]=2,a[3]=1,第0趟,最后一个是a[3]=4,3=4-1-0,第1趟倒数第二个是a[2]=3,2=4-1-1,依次类推。
在C语言中用程序表示
for(i=0;i<N-1;i++)
{
for (j=0;j<N-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}