美文网首页
冒泡排序

冒泡排序

作者: fireshine | 来源:发表于2017-11-23 16:26 被阅读0次

    介绍

      据我理解,冒泡排序的实质就是将数组中相邻的两个元素进行比较,将大的向后移动,外层的for循环负责控制进行多少轮比较,内层的for循环负责控制具体比较的次数。由于是两两比较,所以一共要比较长度-1轮。又因为每一轮比较都会把一个极值排到尾部或首部,所以每比较一轮,下轮就可以少比较一次。另外冒泡排序的复杂度是N2,而且在交换过程中不会移动位置,是一种稳定的排序算法。
      下面是C语言代码实现:

    #include<stdio.h> 
    int main(){
    int a[]={12,44,48,8,26,33,2,15,5,4,5,7,8,6};
    int len=sizeof(a)/sizeof(a[0]);
    int i=0,j=0,t=0;
    for(i=0;i<len-1;i++){
        for(j=0;j<len-1-i;j++){//实质就是两两相比,将最小或最大的数放在队首或队尾;一次外层循环就排好好一个极限值,下次就可以少排一次 
         if(a[j]>a[j+1]){//从小到大排列 
    //   if(a[j]<a[j+1]){//从大到小排列 
            t=a[j];//两两交换位置 
            a[j]=a[j+1];
            a[j+1]=t;
          }
         }
     }
    for(int k=0;k<len;k++){
        printf("%3d",a[k]);
     }
     return 0;
    }
    

      另外C语言中数组不是对象,所以没有length方法,但是数组长度可以用sizeof()方法实现。 sizeof(a)是数组地址的总长度,sizeof(a[0])是指数组中下标为0的元素所占的地址长度。

    相关文章

      网友评论

          本文标题:冒泡排序

          本文链接:https://www.haomeiwen.com/subject/qybzvxtx.html