/*******************
冒泡排序:稳定排序
S=O(1),T=O(n*n)
********************/
#include <stdio.h>
#include <stdbool.h>
int main()
{
int a[10],i;
printf("请输入10个数据:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("冒泡排序后的数据为:\n");
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;
}
}