/******************* 冒泡排序:稳定排序 S=O(1),T=O(n*n) ********************/ #include <stdio.h> #include <stdbool.h> int main() { int a[10],i; printf("请输入10个数据: "); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("冒泡排序后的数据为: "); BubbleSort(a,10); for(i=0;i<10;i++) printf("%d ",a[i]); return 0; } int BubbleSort(int A[],int n) { int i,j,t; bool flag = false; //当整个序列有序的时候,标志位是不发生修改的,从而表示已排好序 for(i=0;i<n-1;i++) //进行n-1趟排序 { for(j=n-1;j>i;j--) //一趟排序过程 { if(A[j]<A[j-1]) //如果后面的元素比前面元素小则交换 { t = A[j]; A[j] = A[j-1]; A[j-1] = t; flag = true; //发生了数据交换,修改标志位 } } if(flag==false) //本趟没有发生交换,说明已经有序 return 0; } }