冒泡排序

#include<stdio.h>
#include<time.h>
void bubbleSort1(int a[],int length);
void bubbleSort2(int a[],int length);
void main()
{  
    float start=0,finish=0;
    int a[10]={10,15,4,2,5,3,6,9,7,1};

    printf("普通冒泡排序\n");
    bubbleSort1(a,10);

    printf("有监视哨的冒泡排序\n");
    bubbleSort2(a,10);
}

 void bubbleSort1(int a[],int length)
 {
   int i,j,temp;
   for(i=0;i<length-1;i++)
       for(j=0;j<length-i-1;j++)
       {
           if(a[j]>a[j+1])
           {
               temp=a[j];
               a[j]=a[j+1];
               a[j+1]=temp;
           } 
   }
       for(i=0;i<length;i++)
           printf("%d ",a[i]);
       printf("\n");

 }



  void bubbleSort2(int a[],int length)
 {
   int i,j,temp,flag=1;
   for(i=0;i<length-1&&flag==1;i++)
   {
       flag=0;
       for(j=0;j<length-i-1;j++)
       {    
           if(a[j]>a[j+1])
           {
               temp=a[j];
               a[j]=a[j+1];
               a[j+1]=temp;
               flag=1;  //当flag=1,表示还需排序,当flag=0时,表示排序已完成,不需再扫描数组,退出循环。
           }
       }
        
   }      
       for(i=0;i<length;i++)
           printf("%d ",a[i]);
       printf("\n");

 }

posted on 2014-07-24 18:04  @冰糖  阅读(217)  评论(0编辑  收藏  举报

导航