Java递归程序未对数组排序 公共类bubbleSort{ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 int[]arr={50,40,30,20,10}; 气泡端口1(arr,0,arr.length-1); 显示(arr); } 公共静态无效泡泡端口1(int[]arr,int i,int li){ 如果(i==0){ 返回; } 如果(i==li){ 气泡端口1(arr,0,li-1); 返回; } if(arr[i]>arr(i+1)){ int temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=温度; } 气泡端口1(arr,i+1,li); } 公共静态无效显示(int[]arr){ 对于(int i=0;i

Java递归程序未对数组排序 公共类bubbleSort{ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 int[]arr={50,40,30,20,10}; 气泡端口1(arr,0,arr.length-1); 显示(arr); } 公共静态无效泡泡端口1(int[]arr,int i,int li){ 如果(i==0){ 返回; } 如果(i==li){ 气泡端口1(arr,0,li-1); 返回; } if(arr[i]>arr(i+1)){ int temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=温度; } 气泡端口1(arr,i+1,li); } 公共静态无效显示(int[]arr){ 对于(int i=0;i,java,recursion,bubble-sort,Java,Recursion,Bubble Sort,方法的第一行bubbleSort1(…)是return;当i==0时。您是main方法调用方法时使用:bubbleSort1(arr,0,arr.length-1);…i==0-因此您的方法没有对任何内容进行排序 它应该看起来更像: 导入java.util.array; 公共类泡泡糖{ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 int[]list={50,40,30,20,10}; bubbleSort1(list,list.length); Syste

方法的第一行
bubbleSort1(…)
return;
i==0
时。您是
main
方法调用方法时使用:
bubbleSort1(arr,0,arr.length-1);
…i==0-因此您的方法没有对任何内容进行排序

它应该看起来更像:

导入java.util.array;
公共类泡泡糖{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int[]list={50,40,30,20,10};
bubbleSort1(list,list.length);
System.out.println(Arrays.toString(list));
}
公共静态void bubbleSort1(int[]列表,int listLength){
如果(listLength==1){return;}
对于(int i=0;i列表[i+1]){
int temp=列表[i];
列表[i]=列表[i+1];
列表[i+1]=临时;
}
bubbleSort1(列表,listLength-1);
}
}
}
输出

[10,20,30,40,50]

为了清晰起见,我随意重命名了变量,并将显示方法删除为数组。toString(list)方法免费提供此功能:)

方法的第一行
bubbleSort1(…)
return;
i==0
时。您是
main
方法调用方法时使用:
bubbleSort1(arr,0,arr.length-1);
…i==0-因此您的方法不排序任何内容

它应该看起来更像:

导入java.util.array;
公共类泡泡糖{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int[]list={50,40,30,20,10};
bubbleSort1(list,list.length);
System.out.println(Arrays.toString(list));
}
公共静态void bubbleSort1(int[]列表,int listLength){
如果(listLength==1){return;}
对于(int i=0;i列表[i+1]){
int temp=列表[i];
列表[i]=列表[i+1];
列表[i+1]=临时;
}
bubbleSort1(列表,listLength-1);
}
}
}
输出

[10,20,30,40,50]

为了清晰起见,我随意重命名了变量,并将显示方法删除为数组。toString(list)方法免费提供此功能:)

您正在使用值
0
I
调用该方法,该方法的第一行是
if(I==0){return;}
。因此,您的方法完全不执行任何操作真的令人惊讶吗?您正在使用
i
的值
0
调用该方法,该方法的第一行是
if(i==0){return;}
。那么,您的方法完全不起作用,这真的令人惊讶吗?
public class bubbleSort {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] arr = {50,40,30,20,10};
        bubbleSort1(arr,0,arr.length-1);
        display(arr);
    }

    public static void bubbleSort1(int[] arr,int i, int li) {
        if (i==0) {
            return;
        }
        if (i==li) {
            bubbleSort1(arr,0,li-1);
            return;
        }
        if (arr[i]>arr(i+1)) {
            int temp = arr[i];
            arr[i]=arr[i+1];
            arr[i+1]=temp;
        }
        bubbleSort1(arr,i+1,li);
    }

    public static void display(int[] arr) {
        for(int i=0;i<arr.length;i++) {
            System.out.print(arr[i]+" ");
        }
    }
}