以下是快速排序的一个程序,编译没错,但运行出错,说是栈溢出,求各位大神指教
#include"stdio.h"#include"string.h"//快速排序intpartition(int*a,intlow,inthigh){inttemp;i...
#include "stdio.h"#include "string.h"
//快速排序
int partition(int *a,int low, int high )
{
int temp;
int pivo=a[low];
while(low<high)
{
while(low<high&&a[high]>=pivo) --high;
temp=a[high];
a[high]=a[low];
a[low]=temp;
while(low<high&&a[low]<=pivo) ++low;
temp=a[high];
a[high]=a[low];
a[low]=temp;
}
return low;
}
void QSort(int *a,int low,int high)
{
if(low<high)
{
int pivotKey=partition(a,low,high);
QSort(a,low,pivotKey-1);
QSort(a,pivotKey,high);
}}
void main()
{
int b[10]={5,3,4,9,7,0,8,1,2,6};
QSort(b,0,9);
for(int i=0;i<10;i++)
printf("%5d",b[i]);
} 展开
//快速排序
int partition(int *a,int low, int high )
{
int temp;
int pivo=a[low];
while(low<high)
{
while(low<high&&a[high]>=pivo) --high;
temp=a[high];
a[high]=a[low];
a[low]=temp;
while(low<high&&a[low]<=pivo) ++low;
temp=a[high];
a[high]=a[low];
a[low]=temp;
}
return low;
}
void QSort(int *a,int low,int high)
{
if(low<high)
{
int pivotKey=partition(a,low,high);
QSort(a,low,pivotKey-1);
QSort(a,pivotKey,high);
}}
void main()
{
int b[10]={5,3,4,9,7,0,8,1,2,6};
QSort(b,0,9);
for(int i=0;i<10;i++)
printf("%5d",b[i]);
} 展开
展开全部
快速排序一般不用递归做吧 你递归调用函数造成栈溢出
追问
用递归比较容易,而且我看了百度的也是用递归的。而且,这个程序应该用不了多少空间,我觉得不是这个问题吧。帮忙看一下~
追答
这个函数改成下面的
void QSort(int *a,int low,int high)
{
if(low<high)
{
int pivotKey=partition(a,low,high);
QSort(a,low,pivotKey-1);
QSort(a,pivotKey+1,high);
}}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询