簡體   English   中英

(分段錯誤)C中Quicksort代碼中的核心轉儲

[英](segmentation fault) core dump in quicksort code in c

我已經為Quicksort編寫了代碼,在某些情況下可以很好地工作,但是在大多數情況下會導致核心轉儲問題。大多數情況下是長輸入> 10,已經是大排序數組了。 為什么會這樣呢?

這是我的代碼。

#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]);

}

更正該行(刪除“ =”)

if(arr[i]<=arr[s])

if(arr[i]<arr[s])

它進入無限循環,因此導致堆棧溢出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM