冒泡排序函数不对给定数组进行排序
Bubble sort function does not sort the given array
所以基本上,我已经设置了冒泡排序算法,奇怪的是它 return 排序数组只是未排序数组。
给定的数组;
int[] array = { 20, 5, 1, 6, 23, 52, 15, 12 };
冒泡排序算法;
public static int[] sort_array(int[] array) {
int [] sorted = array;
int temp = 0;
for (int i = 0; i < sorted.length - 1; i++) {
for (int j = 0; i < sorted.length - i - 1; i++) {
if (sorted[j] > sorted[j + 1]) {
temp = sorted[j];
sorted[j] = sorted[j + 1];
sorted[j + 1] = temp;
}
}
}
return sorted;
}
还做了一个数组return方法;
public static void return_list(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
使用这些方法后,它只是 return 给我未排序的数组。
int[] array = { 20, 5, 1, 6, 23, 52, 15, 12 };
sort_array(array);
return_list(array);
输出 = 20、5、1、6、23、52、15、12;
复制一个数组(假设你想保留原来的数组)
首先,您不会在此处将 array
复制到 sorted
。您正在复制数组的引用以进行排序,因此对 sorted
内容的任何更改也将在 array
中看到
int [] sorted = array;
执行此操作以实例化一个新数组 sorted
并将内容从 array
复制到其中:
Make copy of array
有几种方法(Arrays.copyOf、克隆等)可以进行数组复制。例如:
int[] sorted = Arrays.copyOf(array, array.length);
排序错误
此外,您的 for 循环中似乎存在错误。您没有在这一行
中遍历 j
for (int j = 0; i < sorted.length - i - 1; i++)
因此,看起来您得到的是未排序数组的原因是数组未正确排序。
您每次都检查 i 的值,并在
的每次迭代中增加它的值
for (int j = 0; i < sorted.length - i - 1; i++)
有一个错误:
在此处用 j 替换 i ->for(int j=0;i(here)
所以基本上,我已经设置了冒泡排序算法,奇怪的是它 return 排序数组只是未排序数组。
给定的数组;
int[] array = { 20, 5, 1, 6, 23, 52, 15, 12 };
冒泡排序算法;
public static int[] sort_array(int[] array) {
int [] sorted = array;
int temp = 0;
for (int i = 0; i < sorted.length - 1; i++) {
for (int j = 0; i < sorted.length - i - 1; i++) {
if (sorted[j] > sorted[j + 1]) {
temp = sorted[j];
sorted[j] = sorted[j + 1];
sorted[j + 1] = temp;
}
}
}
return sorted;
}
还做了一个数组return方法;
public static void return_list(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
使用这些方法后,它只是 return 给我未排序的数组。
int[] array = { 20, 5, 1, 6, 23, 52, 15, 12 };
sort_array(array);
return_list(array);
输出 = 20、5、1、6、23、52、15、12;
复制一个数组(假设你想保留原来的数组)
首先,您不会在此处将 array
复制到 sorted
。您正在复制数组的引用以进行排序,因此对 sorted
内容的任何更改也将在 array
int [] sorted = array;
执行此操作以实例化一个新数组 sorted
并将内容从 array
复制到其中:
Make copy of array
有几种方法(Arrays.copyOf、克隆等)可以进行数组复制。例如:
int[] sorted = Arrays.copyOf(array, array.length);
排序错误
此外,您的 for 循环中似乎存在错误。您没有在这一行
中遍历j
for (int j = 0; i < sorted.length - i - 1; i++)
因此,看起来您得到的是未排序数组的原因是数组未正确排序。
您每次都检查 i 的值,并在
的每次迭代中增加它的值for (int j = 0; i < sorted.length - i - 1; i++)
有一个错误: 在此处用 j 替换 i ->for(int j=0;i(here)