时间复杂度:
最好情况下:正序有序,则只需要比较n次。故,为O(n) 最坏情况下: 逆序有序,则需要比较(n-1)+(n-2)+……+1,故,为O(N*N) 平均情况下:O(N*N)空间复杂度:O(1)
稳定性:
排序过程中只交换相邻两个元素的位置。因此,当两个数相等时,是没必要交换两个数的位置的。所以,它们的相对位置并没有改变,冒泡排序算法是稳定的! #include<stdio.h> void bubble_sort(int array[],int len) { int i,j,count1,count2 = 1; for(i=0;i<len-1;i++) { for(j=0;j<len-i-1;j++) { //交换 if(array[j]>array[j+1]) { array[j] = array[j] + array[j+1]; array[j+1] = array[j] - array[j+1]; array[j] = array[j] - array[j+1]; } printf("第%d次: ",count2++); printf(" %d<-->%d ",array[j],array[j+1]); for(count1 = 0;count1 < len;count1++) printf(" %d",array[count1]); printf("\n"); } } } int main() { int count=10,a[10]={9,8,7,6,5,4,3,2,1,0}; printf("初始:9 8 7 6 5 4 3 2 1 0 \n"); bubble_sort(a,count); }