【发布时间】:2013-11-16 09:23:49
【问题描述】:
下面的快速排序代码给出了不正确的结果。谁能告诉我出了什么问题?
#include <stdio.h>
#include <stdlib.h>
#define MAX 30
int b[MAX];
void print(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
int party(int a[],int p,int q)
{
int pivot=a[p];
int t=a[p];
a[p]=a[q];
a[q]=t;
int i,j,k,store=p;
for(i=p;i<=q-1;i++)
{
if(a[i]<=pivot)
{
t = a[i];
a[i] = a[store];
a[store] = t;store++;}
}
t = a[store];
a[store] = a[q];
a[q] = a[store];
return store;
}
void quicksort(int a[],int p,int q)
{
if(p>=q)
{
return;
}
int r=party(a,p,q);
quicksort(a,p,r-1);
quicksort(a,r+1,q);
}
int main()
{
printf("Enter No. oF elements for sorting.\n");
int i,j,k,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Element %d\t",i+1); scanf("%d",&b[i]);
}
print(b,n);
quicksort(b,0,n-1);
print(b,n);
return 0;
}
编辑:只花了几分钟,做了一些基本的缩进,而不是要求作者这样做。我本可以输入正确的变量名,但自从回答后感觉很好。
【问题讨论】:
-
尝试问题的缩进和格式。也尝试使用调试器
-
我建议你调试它,看看会发生什么一步一步。您期望/接收的输出/输入是什么?
-
请先说出问题所在,然后投反对票。这里的所有问题都不可能质量很好。初学者也用SO。所以如果你能帮忙就太好了。
-
@Rafed Nole,不要介意那些自我专家:D 检查聚会功能是否产生了正确的输出。
-
我建议您在寻求帮助时选择更好的变量名称并添加 cmets。像`t=a[store];a[store]=a[q];a[q]=a[store];`这样的行需要一些努力,您应该提供注释或将代码放在名为@的函数中例如 987654322@。
标签: c algorithm sorting quicksort