評價: 0 回應: 0 閱覽: 105
置頂

冒泡排序的問題

void bubblesort(int k[],int n)
{
        bool flag=1;
        int count1=0, count2 = 0;

        for(int i=0; i<n-1 && flag ; i++){
                flag = 0;
                for(int j=1; j<n-i; j++){
                //for(int j=n-1; j>i; j){//問題在這
                count1++;
                        if(k[j-1]> k[j]){
                                count2 ++;
                                flag =1;
                                swap(&k[j-1],&k[j]);
                        }
                }
                }
        cout << count1 << ' ' << count2 << endl;
}

我比較了兩個for(一個從低到高,一個從高到低)
發現效率是不同的(效果依樣,也就是count2一樣,可是count1卻不同)
我想不透是為什麼,想請各位解惑...

(這邊flag是為了如果整串搜尋都沒有交換的話就提早結束的flag)

會員登入 (先登入會員才能回覆留言喔!)

Facebook留言