首页 > 其他 > 详细

随机快排

时间:2015-10-09 16:48:31      阅读:240      评论:0      收藏:0      [点我收藏+]
#include<stdio.h>
int PARTITION(int*A,int p,int r)//分治
{
    int x=A[r-1];
    int i=p-1;
    int j=p;
    int temp;
    while(j<=r-1)    
    {
        if(A[j-1]<=x)
        {
            i++;        
            temp=A[i-1];
            A[i-1]=A[j-1];
            A[j-1]=temp;
        }
        j++;
    }
    temp=A[i];
    A[i]=A[r-1];
    A[r-1]=temp;
    return i+1;
}
int RANDOMIZE_PARTITION(int*A,int p,int r)//随机分治
{
    int temp;
    int i=random()%(r-p+1)+p;
    temp=A[i-1];
    A[i-1]=A[r-1];
    A[r-1]=temp;
    return PARTITION(A,p,r);
}
void RANDOMIZE_QUICKSORT(int*A,int p,int r)//随机快排
{    
    int q;
    if(p<r)
    {
        q=RANDOMIZE_PARTITION(A,p,r);
        RANDOMIZE_QUICKSORT(A,p,q-1);
        RANDOMIZE_QUICKSORT(A,q+1,r);
    }
}
int main()
{    
    int test=1000;
    int array[test];
    int i=0;
    while(i<test)
    {
        array[i]=random()%(test*100);
        i++;
    }
    RANDOMIZE_QUICKSORT(array,1,test);
    i=0;
    while(i<test)
    {
        printf("%d\n",array[i]);
        i++;
    }
    printf("\n");
    return 0;
}

 

随机快排

原文:http://www.cnblogs.com/knowanddo/p/4864387.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!