[英](segmentation fault) core dump in quicksort code in c
I have made code for Quicksort .It works well in some cases but in most of the cases it causes core dump problem.mostly cases are long input >10 , already big sorted array. 我已经为Quicksort编写了代码,在某些情况下可以很好地工作,但是在大多数情况下会导致核心转储问题。大多数情况下是长输入> 10,已经是大排序数组了。 why it is happening ?
为什么会这样呢?
This is my code. 这是我的代码。
#include<stdio.h>
void quicksort(int arr[],int s,int l)
{
int temp;
if(l-s <= 1) return ;
int i=s+1,j=s+1;
for(i;i<l;i++)
{
if(arr[i]<=arr[s])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
j++;
}
}
temp = arr[j-1];
arr[j-1] = arr[s];
arr[s] = temp;
quicksort(arr,s,j);
quicksort(arr,j,l);
}
int main()
{
int arr[50],n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
quicksort(arr,0,n);
for(i=0;i<n;i++)
printf("\n%d\n",arr[i]);
}
Correct the line (remove '=') 更正该行(删除“ =”)
if(arr[i]<=arr[s])
to 至
if(arr[i]<arr[s])
It is going into an inifinite loop and hence causing a stack over flow. 它进入无限循环,因此导致堆栈溢出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.