我创建的这个冒泡排序算法有什么问题?
What is wrong with this bubble sort algorithm I created?
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;
}
}
}
在我的驱动程序中 class 我有:
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
我不确定哪里出了问题。谁能帮我解决这个问题?
冒泡排序 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;
}
}
}
您实施的冒泡排序是错误的。
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]);
}
}
}
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;
}
}
}
在我的驱动程序中 class 我有:
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
我不确定哪里出了问题。谁能帮我解决这个问题?
冒泡排序 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;
}
}
}
您实施的冒泡排序是错误的。
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]);
}
}
}