繁体   English   中英

为什么我的排序代码无法正常工作?

[英]Why my sorting code does not work properly?

我有一个整数数组,我需要:对前一半升序排序,对另一半降序排序。 我不知道这是我无法按需使用的原因。

        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].

您的代码中存在多个错误。 在对另一半数组进行排序时,主键是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]);
      }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM