为什么这段代码在选择排序中给出分段错误,请解释

why is this code giving segmention error in selection sort ,please explain

为什么会出现分段错误,请大神解释一下,我是竞争性编程的新手,我自己找不到错误

这里是选择排序的代码:

#include<stdio.h>

void swap(int *xp ,int *yp)
{
    int temp = *xp;
    *xp = *yp;
    *yp = temp; 
}

void SelectionSort(int* A , int n)
{
    int i ,j ,imin;
    for(i =0 ; i<n-1;i++)
    {   
        imin =i;
        for (j =i+1;i<n;j++)
        {
            if (A[j] < A[imin])
            imin =j;
        }
        swap(&A[imin],&A[i]);

    }
}
int main()
{
    int A[]= {1,2,5,8,44,5,7,9,6};
    int n = sizeof(A)/sizeof(A[0]);
    SelectionSort(A,n);
    printf("start printing:");

    for(int i = 0;i<6 ;i++)
    {           
        printf(" output is %d  ",A[i]);
    }
}

您在 SelectionSort 中的内部 for 循环有问题:

for (j =i+1;i<n;j++)

表示您永远不会测试 j。尝试:

for (j = i+1; j < n; j++)

in for loop condition matching j =i+1;i<n;j++ in this expression at place of i use j then loop will 运行 otherwise not.