求找一下问题所在,题是pta有序表的增删改查操作

我前面测试点都是正确的,而最后一个只是把前面测试点都结合起来了而已,但是却显示最后一个答案错误,下面是我的代码。

int insert(int a[ ], int value)
{
    int i,temp;
    for(i=0;i<Count;i++){
        if(a[i]==value)return -1;
    }
    a[Count]=value;
    for(i=Count;i>0;i--){
        if(a[i-1]>a[i]){
            temp=a[i];
            a[i]=a[i-1];
            a[i-1]=temp;
        }
    }
    Count++;
    return 0;
}
int del(int a[ ], int value)   /* 删除有序数组a中等于value的元素的函数 */
{
    int i,j;
    for(i=0;i<Count;i++){
        if(a[i]==value){
            for(j=i;j<Count;j++){
                a[j]=a[j+1];
                Count--;
                return 0;
            }
        }
    }
    return -1;
}
int modify(int a[ ], int value1, int value2) /* 将有序数组a中等于value1的元素,替换为value2 */ 
{
    int i,j,flag=0;
    for(i=0;i<Count;i++){
        if(a[i]==value2)return -1;
        if(a[i]==value1)flag++;
    }
    if(flag==0)return -1;
    for(i=0;i<Count;i++){
        if(a[i]==value1){
            a[i]=value2;
        }
    }
    for(i=0;i<Count;i++){
        for(j=i;j<Count-1;j++){
            if(a[j]>a[j+1]){
                int temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
    return 0;
    
}
int query(int a[ ], int value)     /* 用二分法在有序数组a中查找元素value的函数 */
{
    int i=0,j=Count-1,m;
    while(i<=j){
        m=(i+j)/2;
        if(a[m]==value)return m;
        else if(a[m]>value){
            j=m-1;
        }
        else if(a[m]<value){
            i=m+1;
        }
    }
    return -1;
}

img

什么题目?
发一下pta页面地址,我测试下

23行循环错了,应该j<Count-1。否则下面a[j+1]就越界了