Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的插入排序算法有什么问题?_Java_Sorting_Insertion Sort - Fatal编程技术网

Java 我的插入排序算法有什么问题?

Java 我的插入排序算法有什么问题?,java,sorting,insertion-sort,Java,Sorting,Insertion Sort,我不明白这为什么不起作用 public class InsertionSort { public static void main(String[] args) { int x[] = { 9, 5, 8, 4, 3, 0, 6, 7, 2, 1 }; int[] result = InsertionSortMethod(x); for (int z = 0; z < x.length; z++) { S

我不明白这为什么不起作用

public class InsertionSort {

    public static void main(String[] args) {

        int x[] = { 9, 5, 8, 4, 3, 0, 6, 7, 2, 1 };
        int[] result = InsertionSortMethod(x);

        for (int z = 0; z < x.length; z++) {
            System.out.print(x[z] + " ");
        }
    }

    public static int[] InsertionSortMethod(int x[]){
        for (int a = 0; a < x.length; a++) {
            int divider = a;
            if(divider > 0 & divider < x.length){
                if(x[divider] < x[0]){
                    int temp = x[divider];
                    for(int c = divider; c > 0; c--){
                        x[c] = x[c-1];
                    }
                    x[0] = temp;
                }
                if(x[divider] > x[divider-1]){
                    x[divider] = x[divider];
                }
                else{
                    for(int b = divider-1; b > 0; b--){
                        if(x[divider] < x[b]){
                            int temp = x[divider];
                            x[divider] = x[b];
                            x[b] = temp;
                        }
                    }
                }
            }
        }
        return x;
    }

}
公共类插入排序{
公共静态void main(字符串[]args){
intx[]={9,5,8,4,3,0,6,7,2,1};
int[]结果=InsertionSortMethod(x);
对于(intz=0;z0&分隔器0;c--){
x[c]=x[c-1];
}
x[0]=温度;
}
如果(x[divider]>x[divider-1]){
x[分隔器]=x[分隔器];
}
否则{
对于(int b=除法器-1;b>0;b--){
if(x[b]
这里有一个简单的插入排序功能:

void insertionSort(int[] arr) {

      int i, j, newValue;

      for (i = 1; i < arr.length; i++) {

            newValue = arr[i];

            j = i;

            while (j > 0 && arr[j - 1] > newValue) {

                  arr[j] = arr[j - 1];

                  j--;

            }

            arr[j] = newValue;

      }

}
void insertionSort(int[]arr){
int i,j,新值;
对于(i=1;i0&&arr[j-1]>newValue){
arr[j]=arr[j-1];
j--;
}
arr[j]=新值;
}
}

你说你想自己做,所以就这样:

for(int b = divider-1; b > 0; b--){
    if(x[divider] < x[b]){
        int temp = x[divider];
        x[divider] = x[b];
        x[b] = temp;
    }
}
for(int b=divider-1;b>0;b--){
if(x[b]

如果索引小于
divider
的数组部分已经排序,并且
x[divider]
介于
x[0]
x[1]
之间,例如(并且
divider
大于3),则
x[divider]
然后在该循环中立即切换到位置
分配器-1
。但是对于
0,索引
divider
处的值刚刚大于
x[b]
,您收到了什么错误?您是否有失败的示例输入和输出?没有错误,以下是输出:0 3 4 5 8 6 7 2 1 9。我试图找出整个数组没有正确排序的原因。学习使用调试器逐步检查代码以查看它在做什么。这是一项很有价值的技能。@user1804933盯着代码看很少是一项好的调试技术。我以Java程序为例,编写了一个关于如何调试的网页。见()