冒泡排序的双阵列

时间:2016-03-16 15:35:04

标签: java algorithm sorting

我知道冒泡排序算法,但我的问题是进行此排序的有效代码是什么。 我有这个算法的两个模型,我认为两个都能正确地排序冒泡但是在内存空间和时间方面最好的是什么?!!

模型A:

public static void bubbleSort(double[] array){
    boolean sorted;
    for(int i = 0; i < array.length - 1; i++){
        sorted = true;
        for(int j = array.length - 1; j > i; j--){
            //swap
            if(array[j] < array[j - 1]){
                double temp = array[j - 1];
                array[j - 1] = array[j];
                array[j] = temp;
                sorted = false;
            }
        }
        if(sorted)
            break;
    }
}

模型B:

static void bubbleSort(double[] list) {
    boolean changed = true;
    do {
        changed = false;
        for (int j = 0; j < list.length - 1; j++)
            if (list[j] > list[j+1]) {
                //swap list[j] wiht list[j+1]
                double temp = list[j];
                list[j] = list[j + 1];
                list[j + 1] = temp;
                changed = true;
            }
    } while (changed);
}

1 个答案:

答案 0 :(得分:0)

我尝试用10000 {0}的System.currentTimeMillis()以天真的方式测试它们。

long a = System.currentTimeMillis();
bubbleSort(array);
long b = System.currentTimeMillis() - a;

第一种是快一点。我总是分别测试随机数据。

  

第一个以毫秒为单位:179,170,185

     

第二个以毫秒为单位:292,241,244

结果是它们同样快速地工作。通常在Java中,不需要不惜一切代价找到最快的方法。所以不要担心并使用它们中的任何一个。