如何修复C代码中的“ SIGSEGV”错误?

时间:2019-07-02 17:59:16

标签: c

#include<stdio.h>
void bubblesort(int a[],int num) {
    int temp;
    int count=0;

    for(int i=0;i<num-1;i++) {
        for(int j=i+1;j<num-i-1;j++) {
            if(a[i]>a[j]) {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
                count++;
            }
         }
    }
    printf("%d",count);
}
int main() {
    int i,j,n=5;
    int arr[]={1,2,3,4,5};

    bubblesort(arr,n);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

这似乎是冒泡排序的一个非常标准的实现。但是,有一个错误。

if(a[i]>a[j]) {
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    count++;
}

i应该是j+1

另外,j应该从0开始:

for(int j = 0; j < num - i - 1; j++) {

供参考:

https://www.geeksforgeeks.org/bubble-sort/