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 - Fatal编程技术网

Java 为什么我的排序代码不能正常工作?

Java 为什么我的排序代码不能正常工作?,java,sorting,Java,Sorting,我有一个整数数组,我需要:对前一半进行升序排序,对另一半进行降序排序。我不知道这不是我想要的工作的原因 for(i = 0 ; i < array.length/2 - 1 ; i++){ ok = false; for(j = i ; j < array.length/2 - 1 ; j++){ if(array[j]>array[j+1]){

我有一个整数数组,我需要:对前一半进行升序排序,对另一半进行降序排序。我不知道这不是我想要的工作的原因

        for(i = 0 ; i < array.length/2 - 1 ; i++){
            ok = false;
            for(j = i ; j < array.length/2 - 1 ; j++){
                if(array[j]>array[j+1]){
                    tempValue = array[j];
                    array[j] = array[j+1];
                    array[j+1] = tempValue;
                    ok = true;
                }
            }
            if(ok == false)
                break;
        }

        for(i = array.length/2 ; i < array.length - 1 ; i++){
            ok = false;
            for(j = i ; j < array.length - 1; j++){
                if(array[j]<array[j+1]){
                    tempValue = array[j];
                    array[j] = array[j+1];
                    array[j+1] = tempValue;
                    ok = false;
                }
            }
             if(ok == false)
                 break;
        }

Expected result: [4,1,2,5,6,8,7,9] - > [1,2,4,5,9,8,7,6].

Result in my code: [1,2,4,5,8,7,9,6].

您的代码中有多个错误。 对另一半数组排序时,major为ok=false。 下面的代码工作正常

 public class MyClass {
        public static void main(String args[]) {
            int i,j,tempValue;
            int array[]= {4,1,2,5,3,6,8,7,10,9};
            boolean ok=true;

            for(i = 0 ; i < array.length/2  ; i++){
                    ok = false;
                    for(j = i ; j < array.length/2  ; j++){
                        if(array[j]>array[j+1]){
                            tempValue = array[j];
                            array[j] = array[j+1];
                            array[j+1] = tempValue;
                            ok = true;
                        }
                    }
                    if(ok == false)
                        break;
                }
                for(i = array.length/2 ; i < array.length  ; i++){
                    ok = false;
                    for(j = array.length/2 ; j < array.length - 1; j++){
                        if(array[j]<array[j+1]){
                            tempValue = array[j];
                            array[j] = array[j+1];
                            array[j+1] = tempValue;
                            ok = true;
                        }
                    }
                     if(ok == false)
                         break;
                }

        for(i = 0 ; i < array.length  ; i++){
        System.out.print(array[i]);
      }
        }
    }

你试过调试代码吗?目前我正在在线编译器中编写,因此我没有调试器的访问权限。然后我建议你等到有了调试器,然后自己调试代码,而不是让我们为你调试。-在那之前,重新了解Bubblesort的工作原理。如果从低索引迭代到高索引,则最终会将最大值或最小值(如果排序向下)移动到末尾,因此在第二次迭代中,您可以跳过比较中的最后一个元素,而不是第一个元素,这就是代码所做的。