java调用主方法数组参数(简单但容易混淆)
我想在main方法中调用代码,但它似乎没有真正起作用java调用主方法数组参数(简单但容易混淆),java,recursion,Java,Recursion,我想在main方法中调用代码,但它似乎没有真正起作用 public class RecursiveSelectionSort { public static void sort(double [] list){ sort(list, 0, list.length -1); } public static void sort(double [] list, int low, int high){ if (low < high){ int indexOfM
public class RecursiveSelectionSort {
public static void sort(double [] list){
sort(list, 0, list.length -1);
}
public static void sort(double [] list, int low, int high){
if (low < high){
int indexOfMin = low;
double min = list[low];
for(int i = low + 1; i <= high; i++){
if(list[i]< min){
min = list[i];
indexOfMin = i;
}
}
list[indexOfMin] = list[low];
list[low] = min;
sort(list, low + 1, high);
}
}
public static void main(String [] args){
double [] list = {3.0,4.0,1.0};//I tried but it doesn't work
System.out.print(sort(list));//it doesn't go to sort(list);
}
}
公共类递归选择排序{
公共静态无效排序(双[]列表){
排序(list,0,list.length-1);
}
公共静态无效排序(双[]列表,整数低位,整数高位){
如果(低<高){
int indexOfMin=低;
双最小值=列表[低];
对于(int i=low+1;i函数println
不支持void
参数。它需要一些非void对象作为输入。但是您的排序函数返回nothing。这就是它不打印的原因。方法sort
返回void
,但您试图传递其结果进入打印。改为尝试以下操作:
double [] list = {3.0,4.0,1.0};
sort(list);
System.out.print(Arrays.toString(list));
请注意,我还使用了实用方法,这是必要的,因为数组本身不会覆盖toString
来显示其内容。sort
是一种void
方法,无法打印其结果。请先尝试sort
然后单独打印列表。public class main{
public class Mainn {
public static void sort(double [] list){
//change 1
System.out.println("Inside sort");
sort(list, 0, list.length -1);
}
public static void sort(double [] list, int low, int high){
if (low < high){
int indexOfMin = low;
double min = list[low];
for(int i = low + 1; i <= high; i++){
if(list[i]< min){
min = list[i];
indexOfMin = i;
}
}
list[indexOfMin] = list[low];
list[low] = min;
sort(list, low + 1, high);
}
}
public static void main(String [] args){
double [] list = {3.0,4.0,1.0};//I tried but it doesn't work
//change 2
sort(list);
//return type of sort was void
//print sorted list here
System.out.println(Arrays.toString(list));
}
}
公共静态无效排序(双[]列表){
//变化1
System.out.println(“内部排序”);
排序(list,0,list.length-1);
}
公共静态无效排序(双[]列表,整数低位,整数高位){
如果(低<高){
int indexOfMin=低;
双最小值=列表[低];
对于(inti=low+1;i试试这个
public class RecursiveSelectionSort {
public static double[] sort(double [] list){
return sort(list, 0, list.length -1);
}
public static double[] sort(double [] list, int low, int high){
if (low < high){
int indexOfMin = low;
double min = list[low];
for(int i = low + 1; i <= high; i++){
if(list[i]< min){
min = list[i];
indexOfMin = i;
}
}
list[indexOfMin] = list[low];
list[low] = min;
return sort(list, low + 1, high);
}
else return list;
}
public static void main(String [] args){
double [] list = {3.0,4.0,1.0};
list = sort(list);
for (int i = 0; i < list.length; i++)
System.out.println(list[i]);
}
}
公共类递归选择排序{
公共静态双[]排序(双[]列表){
返回排序(list,0,list.length-1);
}
公共静态双[]排序(双[]列表,整数低位,整数高位){
如果(低<高){
int indexOfMin=低;
双最小值=列表[低];
对于(int i=low+1;我是什么让你认为排序不被调用?你试过跟踪吗?@BenMinchanJun如果你觉得满意,你需要接受一个答案。我不认为结果应该从排序中打印出来。我不认为排序应该打印任何东西。更改1只是为了证明控制是正确的进入sort()但不是必需的只是将系统保留在那里,以澄清@Ben对sort没有被调用的怀疑什么是“void参数”?我认为你不能期望void参数。