在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  網(wǎng)絡(luò)安全/ 我參照寫了一個(gè)冒泡排序的改進(jìn)算法,不知道哪里出問題并不能測(cè)試成功?

我參照寫了一個(gè)冒泡排序的改進(jìn)算法,不知道哪里出問題并不能測(cè)試成功?

問題就是這樣子:改進(jìn)后的冒泡排序下一次排序只到最后一次交換數(shù)據(jù)的位置,然而并不能成功測(cè)試。代碼如下,煩請(qǐng)指出問題所在 不勝感激。
package bubble_sort;

/**

  • 冒泡排序的改進(jìn)

*

  • 通過設(shè)置標(biāo)志變量來記錄是否發(fā)生了數(shù)據(jù)交換
  • 如果進(jìn)行排序時(shí)并未發(fā)生數(shù)據(jù)交換,說明順序已排好 立即結(jié)束排序
  • 避免不必要的時(shí)間消耗

*/
public class Change_BubbleSort {

public static void change_bubble_sort(int arr[]){
    int i = arr.length-1;
    while(i>0){
        int change;//設(shè)置標(biāo)志
        for (int j = 0;j<i;j++){
            if(arr[j]>arr[j+1]){
                change = j;//記錄最后一次交換的位置
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }else {
                change = 0;//如果是排好序的就退出循環(huán)
            }
            i = change;//因?yàn)樽詈笠淮蔚奈恢煤罂隙ㄊ桥判蚝玫?下一次掃描到最后依次的位置就停下來
        }
        for(int x = 0;x<arr.length;x++){
            System.out.print(arr[x]+" ");
        }
        System.out.println();
    }
}
public static void main(String args[]){
    int arr[] = {12,34,4,21,98,15,43,2};
    change_bubble_sort(arr);
    System.out.println("----------------------");
    for(int i = 0;i<arr.length;i++){
        System.out.print(arr[i]+" ");
    }
}

}

回答
編輯回答
尐潴豬

if(arr[j]>arr[j+1]) 執(zhí)行這一步就直接跳去else了
所以完全沒計(jì)算就change = 0;
看你的題目描述應(yīng)該是用標(biāo)志位實(shí)現(xiàn)冒泡

        int length = arr.length;
        boolean flag = true;
        int temp = 0;
        while (flag) {
            flag = false;
            for (int j = 1; j < length; j++)
                if (arr[j - 1] > arr[j]) {
                    temp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = temp;
                    flag = true;
                }
            length--;
        }
2018年8月12日 03:13