程序出错不知道如何调试

选择排序算法

 #include<stdio.h>

int main()
{
    int a[10]={23,10,7,9,15,88,65,50,3,40};
    int max=0,sub,temp;
    int i,j;
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=10-i;j++)
            if(a[i-1]-a[i+j-1]>max)
            {
                max=a[i-1]-a[i+j-1];
                sub=i+j-1;
            }
        temp=a[i-1];
        a[i-1]=a[sub];
        a[sub]=temp;
        max=0;

    }
    for(i=0;i<=9;i++)
        printf("%d ",a[i]);




    return 0;
}

选择排序不知道错在哪里,求解,运行得不到正确答案

int a[10]={23,10,7,9,15,88,65,50,3,40};
int max=0,sub,temp;
int i,j;
for(i=0;i<=9;i++)
{
sub=i;
for(j=i+1;j<=9;j++)
if(a[i]-a[j]>max)
{
max=a[i]-a[j];
sub=j;
}
temp=a[i];
a[i]=a[sub];
a[sub]=temp;
max=0;

}
for(i=0;i<=9;i++)
    printf("%d ",a[i]);

程序员必须会调试,设置个断点进行调试。

这样做会出问题,当i=4时,10是没换位子 sub值就不会变,所以下一次 i=5时 15的也是最小的 sub值也没变的话 那就会交换