快速排序算法

int partition(int A[], int p, int q)
{
    if(A==NULL||p<0||q<p) return 0;
    
    int key = A[q];
    int smallindex = p-1;
    
    //swapeint(A[p],A[q]);
    for(int i=p; i<q; ++i)
    {
        if(A[i]<key)
        {
            ++smallindex;
            if(smallindex!=i)
            {
                swap(A[i],A[smallindex]);
            }
        }
    }
    smallindex++;
    swap(A[smallindex], A[q]);
    return smallindex;
}

void swapeint(int& a, int& b)
{
    int temp = a;
    a=b;
    b=temp;
}


void quicksort(int myarray[], int p, int q)
{
    int index = partition(myarray,p,q);
    if(index>p)
    {
        quicksort(myarray, p, index-1);
    }
    if(index<q)
    {
       quicksort(myarray,index+1,q);
    }
}


void test()
{
    int myarray[] = {3,4,6,100,88,44,2,0,77,33,1000,50,44,30,10000,99999,22};
    
    quicksort(myarray,0,16);
    

    printf("index: %d \t",111);
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容