Как исправить ошибку "SIGSEGV" в коде C? - PullRequest
0 голосов
/ 02 июля 2019
#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 голосов
/ 02 июля 2019

Это выглядит довольно стандартной реализацией пузырьковой сортировки. Однако есть одна ошибка.

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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...