C 冒泡排序

简而言之就是往上冒泡泡

冒泡排序,顾名思义,就是相邻的两项不断地比较,要是条件成熟就互换,就这样。

//冒泡
void BubbleSort(int a[], int n){
    int i, j, temp, flag = 1;
    //n个数,一共跑n-1趟就好了,n-1个就拍好了,最后一个肯定是好的
    for (i = 0; i < n-1; i++) {
        flag = 0;
        /*
        这里从后往前走,数字小的会不断地交换到前面,肯定的是,每排一次
        最前面的一定是在拍的这些数字里最小的;排过之后,下一趟就排剩下的
        好了,直到都排完。
        当然如果在n-1趟之前排完之后,跳出来就好了。
        */
        for (j = n-1; j > i; j--) {
            if(a[j-1] > a[j]){
            	//只要发生交换说明这一趟还并没有真正的有序
                temp = a[j];
                a[j] = a[j-1];
                a[j-1] = temp;
                flag = 1;
            }
        }
        //要是没有发生交换,说明就已经有序那就OK了
        if(flag == 0)
            return;
    }
}
//初始值
5260391748
一次
0526139478
二次
0152634978
三次
0125364798
四次
0123546789
五次已经排完
0123456789
六次确认一次,使得falg为0,跳出来
0123456789

posted @ 2018-11-12 21:22  赫凯  阅读(37)  评论(0)    收藏  举报