C语言冒泡排序
不说废话,直接上代码
#include <stdio.h>
int sum = 0;//循环计数
/*
*冒泡排序,普通版
*相邻比较,大者后冒
*/
void BubbleSort(int arr[],int size)
{
int i,j,tmp;
for(i=0;i<size-1;++i){
for(j=0;j<size-1-i;++j){
if(arr[j]>arr[j+1]){
tmp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
sum++;
}
}
printf("sum = %d\n",sum);
}
/*
*冒泡排序,改进版
*相邻比较,大者后冒
*比较一遍无交换则已排完
*/
void BubbleSortPlus(int arr[],int size)
{
int i,j,tmp;
char flag;
for(i=0;i<size-1;++i){
flag = 0;
for(j=0;j<size-1-i;++j){
if(arr[j]>arr[j+1]){
tmp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
flag = 1;
}
sum++;
}
if(0 == flag) break;
}
printf("sum = %d\n",sum);
}
int main(void)
{
int i;
int a[]={23,17,9,25,38,21,29,11,78,45};
//BubbleSort(a,sizeof(a)/sizeof(a[0]));
BubbleSortPlus(a,sizeof(a)/sizeof(a[0]));
for(i=0;i<(sizeof(a)/sizeof(a[0]));i++)
printf("%d ",a[i]);
return 0;
}