基础算法之排序(1)--冒泡排序 改进

来源:互联网 发布:预算软件破解 编辑:程序博客网 时间:2024/06/06 04:17
/**********************************************************************************************************         * Function        : test         * Create Date     : 2014/03/23        * Author          : NTSK13         * Email           : beijiwei@qq.com         * Copyright       : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。                                      任何单位和个人不经本人允许不得用于商业用途                                      转载请注明 转自 http://blog.csdn.net/beijiwei         * Version          : V0.1           * date             : 2014/03/23       * history          : V0.1            ***********************************************************************************************************                   算法基础之排序(1)--冒泡排序 改进(1)基本思想: 对待排序的一组数据从前之后进行扫描,若发现相邻的两个数不同时,将这两个数进行交换.  升序和降序是同样道理.  假如待排序的一组数存于array[N],则需要对数组进行N-1次扫描  第1次扫描:  array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换. 第2次扫描: array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换.   .   .   . 第N-1次扫描: array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换. 结束.缺点:     如果N>>100很大,当在第3次扫描结束之后,发现数据已经按照要求排列好了, 则以后的操作就是浪费功夫.   改进:     在一次扫描时,设一个标志位,若某次扫描结束,标志位没有置位,则退出**********************************************************************************************************/                  #include<stdio.h>                                                           int main()                  {                      int i=0,j=0,tmp=0,flag=0;int array[10]={1,2,0,3,4,5,6,7,8,9};              printf("Before sort, The element of array is: \n");          for(i=0;i<10;i++)      {          printf("%d \t",array[i]);         }  /*********************************************************************************************************/      for(i=0;i<9;i++)      {flag=0;for(j=0;j<9;j++)  {  if(array[j]>array[j+1])  {  tmp=array[j];  array[j]=array[j+1];  array[j+1]=tmp;flag=1;}        }if(flag==0)break;}/*********************************************************************************************************/      printf("\n After sort, The element of array is: \n");        for(i=0;i<10;i++)      {          printf("%d \t",array[i]);         }          printf("\n");           return 0;    }    


0 0