冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
#include<stdio.h>
void bubble_sort(int *a,int n)
{
int i,j,key;
for(i=0;i<n-1;i++)
for(j=n-1;j>i;j--) /*从后往前冒*/
if(a[j-1]>a[j]){
key=a[j-1];
a[j-1]=a[j];
a[j]=key;
}
}
int main(int argc,char *argv[])
{
int array[10]={8,2,3,6,5,9,4,1,0,7},i;
bubble_sort(array,10);
for(i=0;i<10;i++)
printf("%d ",array[i]);
putchar('\n');
return 0;
}