当前位置: 首页 > >

快速排序partition的两种分法

发布时间:

第一种


思想:两边向中间靠拢


?


int patition(int a[],int s,int e)


{


int pivot=a[s];


?


while (s

{


while (s=pivot) e--;


a[s]=a[e];


while (s

a[e]=a[s];


}


?


a[s]=pivot;


?


return i;


}


?


?


?


第二种


思想:大于pivot的数与小集边界交换


int patition(int a[],int s,int e)



{



int pivot=a[s];






int i=s;//做pivot,分小集和大集



int j=s+1;



for (;j<=e;j++)



{



if (a[j]


{



swap(a[j],a[i+1]);



i++;



}



}



swap(a[s],a[i]);//pivot与小集边界交换,则形成了 [小集 |pivot| 大集]







return i;


}



友情链接: