如何在冒泡排序中对随机数进行排序
How to sort random number in bubble sort
我正在尝试放置 运行 一个程序,该程序将打印 1000 个随机数并在冒泡排序中对它们进行排序,但是当我 运行 这段代码时,它会打印我的 1000 个随机数但是不会解决它。请帮助我理解。
import java.util.Random;
import java.util.Arrays;
public class JavaApplication3 {
public static void main(String [] args){
Random g = new Random();
int [] number = new int [1000];
System.out.print("Random Numbers:");
for (int d = 0 ; d<number.length ; d++){
int RandomG = g.nextInt(1000)+1;
System.out.print(" " +RandomG);
}
System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number)));
}
public static int [] BubbleSortAsceMethod(int[] number){
int temp;
for(int i = 0 ; i < number.length-1 ; i++){
for ( int j = 1 ; j < number.length-1 ; j++){
if ( number[j-1] < number[j]){
temp = number[j-1];
number[j-1] = number[j];
number[j] = temp;
}
}
}
return number;
}
}
花点时间,用笔和纸画出您的代码的实际作用。虽然缩进很难看,但我相信你的错误在于双for循环(J是错误的)祝你好运!
数字乱序,当number[j-1]大于number[j](不小于)时需要调换,除非你想倒序。
内循环应该是j < number.length - i,而不是j < number.length - 1
for (int j = 1 ; j < number.length - i ; j++){
if (number[j-1] > number[j]){
您没有使用随机数初始化 "number" 数组,而是将其大小设置为 1000。我认为这就是它没有解决的原因。你必须把你的 "number" 数组放在第一个 for 循环中,然后 initialize/populate 它的随机值是这样的:-
for (int d = 0 ; d<number.length ; d++){
int RandomG = g.nextInt(1000)+1;
number[d] = RandomG;
System.out.print(" " +RandomG);
}
完整代码如下:-
package Whosebug;
import java.util.Random;
import java.util.Arrays;
/**
*
* @author User
*/
public class Whosebug {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Random g = new Random();
int [] number = new int [1000];
System.out.print("Random Numbers:");
for (int d = 0 ; d<number.length ; d++){
int RandomG = g.nextInt(1000)+1;
number[d] = RandomG;
System.out.print(" " +RandomG);
}
System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number)));
}
public static int [] BubbleSortAsceMethod(int[] number){
int temp;
for(int i = 0 ; i < number.length-1 ; i++){
for ( int j = 1 ; j < number.length-i-1 ; j++){
if ( number[j-1] > number[j]){
temp = number[j-1];
number[j-1] = number[j];
number[j] = temp;
}
}
}
return number;
}
}
我正在尝试放置 运行 一个程序,该程序将打印 1000 个随机数并在冒泡排序中对它们进行排序,但是当我 运行 这段代码时,它会打印我的 1000 个随机数但是不会解决它。请帮助我理解。
import java.util.Random;
import java.util.Arrays;
public class JavaApplication3 {
public static void main(String [] args){
Random g = new Random();
int [] number = new int [1000];
System.out.print("Random Numbers:");
for (int d = 0 ; d<number.length ; d++){
int RandomG = g.nextInt(1000)+1;
System.out.print(" " +RandomG);
}
System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number)));
}
public static int [] BubbleSortAsceMethod(int[] number){
int temp;
for(int i = 0 ; i < number.length-1 ; i++){
for ( int j = 1 ; j < number.length-1 ; j++){
if ( number[j-1] < number[j]){
temp = number[j-1];
number[j-1] = number[j];
number[j] = temp;
}
}
}
return number;
}
}
花点时间,用笔和纸画出您的代码的实际作用。虽然缩进很难看,但我相信你的错误在于双for循环(J是错误的)祝你好运!
数字乱序,当number[j-1]大于number[j](不小于)时需要调换,除非你想倒序。
内循环应该是j < number.length - i,而不是j < number.length - 1
for (int j = 1 ; j < number.length - i ; j++){
if (number[j-1] > number[j]){
您没有使用随机数初始化 "number" 数组,而是将其大小设置为 1000。我认为这就是它没有解决的原因。你必须把你的 "number" 数组放在第一个 for 循环中,然后 initialize/populate 它的随机值是这样的:-
for (int d = 0 ; d<number.length ; d++){
int RandomG = g.nextInt(1000)+1;
number[d] = RandomG;
System.out.print(" " +RandomG);
}
完整代码如下:-
package Whosebug;
import java.util.Random;
import java.util.Arrays;
/**
*
* @author User
*/
public class Whosebug {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Random g = new Random();
int [] number = new int [1000];
System.out.print("Random Numbers:");
for (int d = 0 ; d<number.length ; d++){
int RandomG = g.nextInt(1000)+1;
number[d] = RandomG;
System.out.print(" " +RandomG);
}
System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number)));
}
public static int [] BubbleSortAsceMethod(int[] number){
int temp;
for(int i = 0 ; i < number.length-1 ; i++){
for ( int j = 1 ; j < number.length-i-1 ; j++){
if ( number[j-1] > number[j]){
temp = number[j-1];
number[j-1] = number[j];
number[j] = temp;
}
}
}
return number;
}
}