#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
void printA(int a[],int p,int r)
{
for(int i=p;i<=r;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
void swop(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
int partition(int a[],int p,int r)
{
int i=p-1,j;
int x=a[r];
for(j=p;j<r;j++)
{
if(a[j]<x)
{
i++;
swop(&a[j],&a[i]);
}
}
swop(&a[r],&a[i+1]);
return i+1;
}
int at(int a[],int p,int r,int i)
{
int q=partition(a,p,r);
int k=q-p+1;
if(i==k)
return a[q];
else if(i<k)
return at(a,p,q-1,i);
else
return at(a,q+1,r,i-k);
}
void sortByPairs(int a[],int p,int r)
{
for(int i=p;i+1<=r;i+=2)
{
if(a[i]>a[i+1])
{
swop(&a[i],&a[i+1]);
}
}
}
int partition2(int a[],int p,int r)
{
sortByPairs(a,p,r);
int i=p-2
算法导论 思考题 9-3
最新推荐文章于 2019-01-04 16:46:58 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)