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
我不确定是什么问题。任何人都可以帮我解决这个问题吗?
答案 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]);
}
}
}