首页 > 代码库 > 冒泡排序-精编版

冒泡排序-精编版

 1 #include <stdio.h>
 2 /**************************************************************
 3 *       BubbleSort:冒泡排序实现函数(从小到大                  *   
 4 *       参数:a[]:排序前的整型数组                           *
 5 *              n:数组元素数                                   *
 6 *       返回值:无                                            *   
 7 ***************************************************************/
 8 void BubbleSort(int a[],int n)
 9 {
10     int temp=0;
11     int i=0;
12     int j=0;
13     int k=0;
14     int swap=0;
15     int swapNum=0;
16 
17     for(i=0; i<n-1&&!swap; ++i ) //如果一轮中没有交换则说明已经排序完毕
18     {
19         swap=1;
20         for( j=n-1; j>i; --j )
21         {
22             printf("start compare a[%d] and a[%d]\n\n",j,j-1);
23             if( a[j]<a[j-1] )//改为>则为从大到小排序
24             {
25                  printf("a[%d]<a[%d]\n",j,j-1);
26                  temp=a[j-1];
27                  printf("temp=a[%d]\n",j-1);
28                  a[j-1]=a[j];
29                  printf("a[%d]=a[%d]\n",j-1,j);
30                  a[j]=temp;
31                  printf("a[%d]=temp\n",j);
32                  swap=0;
33                  swapNum++;
34             }
35             else
36                 printf("a[%d]>a[%d],no need to change.\n\n",j,j-1);
37             printf("当前排序为:\n");
38             for( k=0; k<n; k++ )  //打印当前数组中的数值
39                 printf(" %d",a[k]);
40             printf("\n");
41         }
42         printf("****** %d 冒泡出来******\n",a[i]);      
43     }
44     printf("共交换次数:%d\n",swapNum);
45 }
46 /***************************************************************
47 *                 主函数:调用冒泡排序函数实现排序             *
48 ****************************************************************/
49 void main(void)
50 {
51     int i=0;
52     int j=0;
53     int k=0;
54     int a[5]={10,7,30,11,0};
55 
56     BubbleSort(a,5);
57 
58     for( i=0; i<5; i++ )
59         printf(" %d",a[i]);
60 
61      printf("\n");
62 }

 

冒泡排序-精编版