作业帮 > 综合 > 作业

《The C Programming Language》中快排的错误

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 14:11:10
《The C Programming Language》中快排的错误
程序如下:
//Qsort.c by Tydus.
#include
int arr[] = {14,10,11,5,6,15,0,15,16,14,0,8,17,15,7,19,17,1,18,7};
/* swap函数:交换v[k]与v[j]的值 */
inline void swap(int v[],int k,int j)
{
int temp;
temp = v[k];
v[k] = v[j];
v[j] = temp;
}
void qsort(int v[],int left,int right)
{
int j,last;
if (left >= right) /* 若数组包含的元素个数少于两个 */
return; /* 则不执行任何操作 */
swap(v,left,(left + right)/2); /* 将划分子集的元素移动到V[0] */
last=left; /* 用last记录中比关键字小间的最右位置*/
for (j = left+1; j
给:
#include
int a[10]={4,7,2,9,1,3,8,5,0,6};
int partition(int p,int r)
{
int t,i,j,x;
i=p,j=r+1,x=a[p];
while(1)
{
while(a[++i]x);
if(i>=j)break;
t=a[i];
a[i]=a[j];
a[j]=t;
}
a[p]=a[j];
a[j]=x;
return j;
}
void qSort(int p,int r)
{
int q;
if(p