冒泡排序有问题 Java
Having trouble with bubble sort Java
我正在尝试实现 冒泡排序,但它不起作用!帮我找个问题。
代码:
public class Main {
public static int e=0;
public static int arraylength;
public static int[] array = new int[10];
public static void main(String[] args) {
Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" "+array[i]);
}
arraylength=array.length;
for (int i =0;i<arraylength;i++) {
arraylength--;
for (int j = 0; j < arraylength - 1; j++) {
if (array[j] > array[j + 1]) {
e = array[j + 1];
array[j + 1] = array[j];
array[j] = e;
}
}
}
}
}
控制台:
输入数组:5 1 5 4 7 8 7 7 2 8
输出:1 4 5 2 5 7 7 7 8 8
public class Main {
public static int e=0;
public static int arraylength;
public static int[] array = new int[10];
public static void main(String[] args) {
Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" "+array[i]);
}
System.out.println();
arraylength=array.length;
for (int i =0;i<arraylength;i++) {
arraylength--;
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
e = array[j + 1];
array[j + 1] = array[j];
array[j] = e;
}
}
}
for(int i=0;i<array.length;++i){
System.out.print(" "+array[i]);
}
}
}
输入数组:7 7 4 1 2 9 6 4 9 6
输出:1 2 4 4 6 6 7 7 9 9
有效,但有时:
输入数组:5 2 2 3 9 6 7 7 0 6
输出:2 2 3 0 5 6 6 7 7 9
改变
for (int i =0; i<arraylength; i++) {
到
for (int i =0; i<array.length; i++) {
外层循环需要对数组中的每个元素执行一次 运行,而您不能使用 arraylength
变量执行此操作,因为您正在减少它的值,即在第一次迭代之后,arraylength
不再等于 array.length
.
public static int e=0;
public static int arraylength;
public static int[] array = new int[10];
public static void main(final String[] args) {
final Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" " + array[i]);
}
System.out.println();
arraylength = array.length;
for (int i =0;i<arraylength;i++) {
for (int j = 1; j < arraylength - i; j++) {
if (array[j - 1] > array[j]) {
e = array[j - 1];
array[j - 1] = array[j];
array[j] = e;
}
}
}
for (final int element : array) {
System.out.print(" " + element);
}
}
你不需要每次在数组上循环时都减少 arraylength 的值
试试这个:
public class Main {
public static int e=0;
public static int[] array = new int[10];
public static void main(String[] args) {
Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" "+array[i]);
}
System.out.println();
for (int i =0;i<array.length;i++) {
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
e = array[j + 1];
array[j + 1] = array[j];
array[j] = e;
}
}
}
for(int i=0;i<array.length;++i){
System.out.print(" "+array[i]);
}
}
}
行
arraylength--;
导致了问题。您不需要更改该值,因为它会影响 for 循环的工作。
我正在尝试实现 冒泡排序,但它不起作用!帮我找个问题。
代码:
public class Main {
public static int e=0;
public static int arraylength;
public static int[] array = new int[10];
public static void main(String[] args) {
Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" "+array[i]);
}
arraylength=array.length;
for (int i =0;i<arraylength;i++) {
arraylength--;
for (int j = 0; j < arraylength - 1; j++) {
if (array[j] > array[j + 1]) {
e = array[j + 1];
array[j + 1] = array[j];
array[j] = e;
}
}
}
}
}
控制台:
输入数组:5 1 5 4 7 8 7 7 2 8
输出:1 4 5 2 5 7 7 7 8 8
public class Main {
public static int e=0;
public static int arraylength;
public static int[] array = new int[10];
public static void main(String[] args) {
Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" "+array[i]);
}
System.out.println();
arraylength=array.length;
for (int i =0;i<arraylength;i++) {
arraylength--;
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
e = array[j + 1];
array[j + 1] = array[j];
array[j] = e;
}
}
}
for(int i=0;i<array.length;++i){
System.out.print(" "+array[i]);
}
}
}
输入数组:7 7 4 1 2 9 6 4 9 6
输出:1 2 4 4 6 6 7 7 9 9
有效,但有时:
输入数组:5 2 2 3 9 6 7 7 0 6
输出:2 2 3 0 5 6 6 7 7 9
改变
for (int i =0; i<arraylength; i++) {
到
for (int i =0; i<array.length; i++) {
外层循环需要对数组中的每个元素执行一次 运行,而您不能使用 arraylength
变量执行此操作,因为您正在减少它的值,即在第一次迭代之后,arraylength
不再等于 array.length
.
public static int e=0;
public static int arraylength;
public static int[] array = new int[10];
public static void main(final String[] args) {
final Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" " + array[i]);
}
System.out.println();
arraylength = array.length;
for (int i =0;i<arraylength;i++) {
for (int j = 1; j < arraylength - i; j++) {
if (array[j - 1] > array[j]) {
e = array[j - 1];
array[j - 1] = array[j];
array[j] = e;
}
}
}
for (final int element : array) {
System.out.print(" " + element);
}
}
你不需要每次在数组上循环时都减少 arraylength 的值
试试这个:
public class Main {
public static int e=0;
public static int[] array = new int[10];
public static void main(String[] args) {
Random random = new Random();
for(int i=0;i<array.length;++i){
array[i]=random.nextInt(10);
System.out.print(" "+array[i]);
}
System.out.println();
for (int i =0;i<array.length;i++) {
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
e = array[j + 1];
array[j + 1] = array[j];
array[j] = e;
}
}
}
for(int i=0;i<array.length;++i){
System.out.print(" "+array[i]);
}
}
}
行
arraylength--;
导致了问题。您不需要更改该值,因为它会影响 for 循环的工作。