美文网首页
荷兰国旗问题

荷兰国旗问题

作者: 霍运浩 | 来源:发表于2019-02-23 17:24 被阅读0次

    1.荷兰国旗问题

    传入num 数组中大于num的数放左边 小于num的数放右边 等于num的数 放中间

    1.1 结题思路

    构造三个变量 cur指针指向arr[0]
    less指针指向arr[-1] less 是全部比num小的数
    more 指针指向arr[lentgh] more是全部比num大的数
    1 当arr[cur]==num cur++;
    2 当arr[cur]>num 交换arr[--more]与arr[cur]
    3 当arr[cur]<num 交换arr[++less]与arr[cur ] 并且cur++
    循环此过程 直到cur==more为止

    public static int[] partition(int arr[],int l,int r,int num){
            
            int less=l-1;
            int more=r+1;
            int cur=l;
            while(cur<more){
                if(arr[cur]<num){
                    swap(arr,++less,cur++);
                }else if(arr[cur]>num){
                    
                    swap(arr,--more,cur);
                }else{
                    cur++;
                }
                
            }
            return new int[]{less+1,more-1};
            
        }
    

    相关文章

      网友评论

          本文标题:荷兰国旗问题

          本文链接:https://www.haomeiwen.com/subject/nqjpyqtx.html