交换排序之冒泡算法的C语言实现 2017-3-19更新

#include <stdio.h>
/*
* 冒泡算法就是相邻的两个值相比较,如果前面的值大于后面的值则交换两个值.每次比较并交换后从左向右依次步进一个记录.直到比较到最后一个元素.每进行一轮比较后最后一个元素就是最大值.
0.初始时.i=0,即最小索引号.j=n-1,即最大索引号.因为是C语言的原因,索引号从0开始,
1.如果i+1的值小于j,比较索引号i与索引号i+1里的值的大小,如果索引号i里的值比较大,则交换这两个索引号里的值.
2.i值加上1,如果i==n-j-1,(j轮循环后最后j个值是已排序好的.)那么终止此轮循环,进入下一步,否则返回上一步.
3.j++,如果j>=n,程序终止.(j是用来控制循环次数的.)否则让i=0,然后返回第一步,继续进行下一轮交换.
*/
void bubblesort(int a[],int n){
    int i,j,f,x; //f用于标记是否发生了交换,如果没有就结束后面的冒泡循环轮.
    for(j=0;j<n;j++){
        f=0;
        for(i=0;i<n-j-1;i++){//n-j-1,每一轮过后最后的一个元素就是已排序好的.而j的值就是经过的轮数.i的值最大为倒数第二个值,因为它会与倒数第一个值i+1相比较
            if(a[i]>a[i+1]){//比较相邻的两个值,左边大于右边则交换
                x=a[i];
                a[i]=a[i+1];
                a[i+1]=x;
         f=1; } }
    if(f==1)
      break;
} }
int main(){ int i; int a[]={12,0,25,36,99,85,64,26,77,39,19,99}; change(a,12); for(i=0;i<12;i++) printf("%d\t",a[i]); return 0; } 输出结果: Output: 0 12 19 25 26 36 39 64 77 85 99 99

 

posted @ 2017-03-16 17:48  夜梦多离殇  阅读(161)  评论(0编辑  收藏  举报