C语言中冒泡排序

冒泡法

对长度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;

          }

      }

}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值