void QuickSort1(int *s,int left,int right)
{
int i,j,t,pivot;
if(left>right)
return;
if(left<right)
{
pivot = s[left]; //基准数
i=left;
j=right;

while(i!=j)
{
while(i<j &&s[j]>=pivot) j--; //从右向左找第一个比基准数小的数
while(i<j &&s[i]<=pivot) i++; //从左向右找第一个比基准数大的数
if(i<j) //交换两数
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
s[left] = s[i]; //基准数归位
s[i] = pivot;

QuickSort1(s,left,i-1);
QuickSort1(s,i+1,right);
}

}

void QuickSort2(int *s,int left,int right)
{
int i,j,pivot;
if(left>right)
return;
if(left<right)
{
pivot = s[left]; //基准数
i=left;
j=right;

while(i!=j)
{
while(i<j &&s[j]>=pivot) j--; //从右向左找第一个比基准数小的数
if(i<j)
{
s[i]=s[j];
i++;
}
while(i<j &&s[i]<=pivot) i++; //从左向右找第一个比基准数大的数
if(i<j)
{
s[j]=s[i];
j--;
}
}

s[i] = pivot; //基准数归位

QuickSort2(s,left,i-1);
QuickSort2(s,i+1,right);
}

}

int main()
{
int a[10] = {1,6,7,0,2,17,13,35,19,23};
//QuickSort1(a,0,9);
QuickSort2(a,0,9);
int i=0;
for(;i<10;i++)
printf("%d ",a[i]);
return 0;
}

posted on 2015-02-06 14:03  叶城宇  阅读(368)  评论(0编辑  收藏  举报