我创建的这种冒泡排序算法有什么问题?

时间:2016-03-13 20:59:07

标签: java eclipse sorting bubble-sort

int arraySize = 10;
int[] array = new int[30];

public void generateRandomArray() {
    for (int i=0; i < arraySize; i++) {
        array[i] = (int) (Math.random() * (10-1)+1);
    }
}

public void bubbleSort(){
    for (int i=0; i < arraySize; i++) {
        if (array[i] < array[i+1]) {
        } else if (array[i] > array[i+1]) {
            int storeNumber = array[i];
            array[i] = array[i+1];
            array[i+1] = storeNumber;
        }
    }
}

在我的司机课程中,我有:

public class Driver {
    public static void main(String[] args) {
        DataOperations array = new DataOperations();
        array.generateRandomArray();
        array.printArray();
        array.bubbleSort();
        array.printArray();
    }
}

在冒泡之前,我得到了:

0-1
1-8
2-1
3-2
4-9
5-1
6-7
7-2
8-5
9-3

冒泡后,我得到了:

0-1
1-1
2-2
3-8
4-1
5-7
6-2
7-5
8-3
9-0

我不确定是什么问题。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

冒泡排序为O(n^2),您需要重复内循环n次。

for(int j=0;j<arraySize;j++) {
for(int i=0;i<arraySize;i++){
    if(array[i]<array[i+1]){
    }else if(array[i]>array[i+1]){
        int storeNumber=array[i];
        array[i]=array[i+1];
        array[i+1]=storeNumber;
    } 
}
}

答案 1 :(得分:0)

您实施的冒泡排序是错误的。

for(int i = 0; i < arraySize; i++){
    for(int j = arraySize-1; j > i; j--) {
         if(A[j] < A[j-1]){
              swap(A[j],A[j-1]);
          }
    }
 }