标签:
算法思想:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
例如:从大到小排序时候,对全部数从左到右对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。
1 int temp[10]= {21,26,74,96,34,72,3,60,46,53}; 2 void bubbleSort(int a[], int n){ 3 int tmp = 0; 4 int i,j,k; 5 for(i =0 ; i< n-1; i++) { 6 for(j = 0; j < n-i-1; j++) { 7 if(a[j] > a[j+1]) 8 { 9 tmp = a[j] ; a[j] = a[j+1] ; a[j+1] = tmp; 10 } 11 } 12 printf("\t\n NO.%d :" , i+1); 13 for(k=0;k<n;k++){ 14 printf(" %d ", a[k]); 15 } 16 } 17 }
运行结果如下:
总结:N个数进行冒泡排序需要N-1趟循环,第k次循环需要N-k次比较。
算法的时间复杂度n-1 + n-2 + ... + 2 + 1 = n(n-1)/2,省略小值,时间复杂度为O(N2)。
标签:
原文地址:http://www.cnblogs.com/pingwen/p/4458565.html