划分算法

Posted ssdut_yrp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了划分算法相关的知识,希望对你有一定的参考价值。

public class ArrayPar 
    private long[] theArray;
    private int nElems;

    public ArrayPar(int max)
        theArray=new long[max];
        nElems=0;
    

    public void insert(long value)
        theArray[nElems]=value;
        nElems++;
    

    public int size()
        return nElems;
    

    public void display()
        System.out.print("A=");
        for(int j=0;j<nElems;j++)
            System.out.print(theArray[j]+" ");
        System.out.println("");
    

    public int partitionIt(int left,int right,long pivot)
        int leftPtr=left-1;
        int rightPtr=right+1;
        while(true)
            while(leftPtr<right&&theArray[++leftPtr]<pivot)
            
            while(rightPtr>left&&theArray[--rightPtr]>pivot)
            
            if(leftPtr>=rightPtr)
                break;
            
            else
                swap(leftPtr,rightPtr);
            
        
        return leftPtr;
    

    public void swap(int dex1,int dex2)
        long temp;
        temp=theArray[dex1];
        theArray[dex1]=theArray[dex2];
        theArray[dex2]=temp;
    
public class PartitionApp 
    /**
     * @param args
     */
    public static void main(String[] args) 
        // TODO Auto-generated method stub
        int maxSize=16;
        ArrayPar arr;
        arr = new ArrayPar(maxSize);
        for(int j=0;j<maxSize;j++)
            long n=(int)(Math.random()*199);
            arr.insert(n);
        
        arr.display();
        long pivot=99;
        System.out.print("Pivot is "+pivot);
        int size =arr.size();
        int partDex=arr.partitionIt(0, size-1, pivot);
        System.out.println(",Partition is at index "+partDex);
        arr.display();
    

以上是关于划分算法的主要内容,如果未能解决你的问题,请参考以下文章

划分算法与快速排序

stage划分算法

网络划分子网js算法

划分算法

快速排序算法

贪心算法:划分字母区间