首页 > 代码库 > 算法基础之排序(1)--冒泡排序 改进

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

 1     /**********************************************************************************************************          
 2     * Function        : test          
 3     * Create Date     : 2014/03/23         
 4     * Author          : NTSK13          
 5     * Email           : beijiwei@qq.com          
 6     * Copyright       : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。          
 7                                  任何单位和个人不经本人允许不得用于商业用途          
 8                                  转载请注明 转自 http://blog.csdn.net/beijiwei          
 9     * Version          : V0.1            
10     * date             : 2014/03/23        
11     * history          : V0.1             
12     ***********************************************************************************************************          
13                
14     算法基础之排序(1)--冒泡排序 改进
15      
16      
17     基本思想: 对待排序的一组数据从前之后进行扫描,若发现相邻的两个数不同时,将这两个数进行交换. 
18               升序和降序是同样道理.  
19      
20      假如待排序的一组数存于array[N],则需要对数组进行N-1次扫描 
21       
22      第1次扫描:  array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换. 
23      第2次扫描: array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换. 
24        . 
25        . 
26        . 
27      第N-1次扫描: array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换. 
28      结束. 
29      
30     缺点:     如果N>>100很大,当在第3次扫描结束之后,发现数据已经按照要求排列好了, 则以后的操作就是浪费功夫. 
31                 
32     改进:     在一次扫描时,设一个标志位,若某次扫描结束,标志位没有置位,则退出 
33      
34      
35     **********************************************************************************************************/                    
36     #include<stdio.h>                     
37                                               
38     int main()                    
39     {                    
40         int i=0,j=0,tmp=0,flag=0;  
41         int array[10]={1,2,0,3,4,5,6,7,8,9};      
42             
43         printf("Before sort, The element of array is: \n");      
44         
45         for(i=0;i<10;i++)    47             printf("%d \t",array[i]);       49     /*********************************************************************************************************/    
50         for(i=0;i<9;i++)    
51         {  
52             flag=0;  
53             for(j=0;j<9;j++)    
54             {    
55                 if(array[j]>array[j+1])    
56                 {    
57                     tmp=array[j];    
58                     array[j]=array[j+1];    
59                     array[j+1]=tmp;  
60                     flag=1;  
61                 }    
62             
63             }  
64             if(flag==0)  
65                 break;    
66         }  
67     /*********************************************************************************************************/    
68         printf("\n After sort, The element of array is: \n");      
69         for(i=0;i<10;i++)    71             printf("%d \t",array[i]);       73           
74         printf("\n");       
75         
76         return 0;      
77     }