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 }
时间: 2024-10-09 19:42:20