我尝试在C中实现QuickSort,但没有得到正确的结果。这是我写的程序。
#include<stdio.h>
int partition(int a[],int low,int high)
{
int pivot = a[high];
int temp;
int i = low-1;
int j=0;
for(j=0;j<high-1;j++)
{
if(a[j]<=pivot)
{
i=i+1;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
temp = a[i+1];
a[i+1] = pivot;
a[high] = temp;
return (i+1);
}
void quick_sort(int a[],int low,int high)
{
if(low<high)
{
int q = partition(a,low,high);
quick_sort(a,low,q-1);
quick_sort(a,q+1,high);
}
}
main()
{
int i,n,a[10];
printf("\nEnter the number of elements in the array : ");
scanf("%d",&n);
printf("\nEnter the elements in the array : ");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("\nElements in the array before sorting : ");
for(i=0;i<n;i++)
{
printf (" %d",a[i]);
}
quick_sort(a,0,n-1);
printf("\nElements in the array after sorting : ");
for(i=0;i<n;i++)
{
printf (" %d",a[i]);
}
printf("\n");
}
我输入为0,4,2,7但结果是4,0,7,2。我无法通过此代码找到问题。有人能帮助我吗?
答案 0 :(得分:1)