【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
// 原理:每次两个数进行比较,从数组的前两个元素开始,如果前面的数 > 后面的数,就交换
第一轮会求出一个最大值,并且放在最后面,
然后 依此类推,经过最多N-1轮,排序完成。
///////bubble_sort.c///
#include<stdio.h>
#define N 5
int main(int argc, const char *argv[])
{
int a[N];
int temp;//临时的中间变量
int i,j;
printf("请输入%d个数值:\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N-1;i++)//外循环控制比较轮次,n个数比较n-1轮.
{
for(j=0;j<N-1-i;j++)//内循环n个数两两比较,比较n-1-i次.
{
if(a[j]>a[j+1])//前一个数大于后一个数交换
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
/*
//利用做差思想,不借助中间变量交换值
a[j]=a[j]-a[j+1];//保留差值
a[j+1]=a[j+1]+a[j];//加差值
a[j]=a[j+1]-a[j];//减差值
//若不懂可以举例a=10;b=3;交换两个值一样的,方法一样。
*/
//遍历数组
for(i=0;i<N;i++)
printf("%d--<",a[i]);
printf("\n");
return 0;
}
来源:oschina
链接:https://my.oschina.net/u/4430408/blog/3153624