一个直接排序,结果不对,哪里有错误啊,求大佬解决

void Insert_price(SeqList &L)
{
Student p;
int i;
for (i = 0; i < L.last; i++)
if (L.elem[i].price < L.elem[i - 1].price)
{
p = L.elem[i];
int j=0;

        for (j = i - 1; j <= 0 && L.elem[j].price > p.price; j--)
            L.elem[j + 1] = L.elem[j];
        L.elem[j + 1] = p;
    }

i=0;

for(i=0;i<L.last;i++)
{
printf("学号:%s 姓名:%s 成绩:%d\n\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
}
printf("\n");
}

void Insert_price(SeqList &L)
{
    Student p;
    int i;
    for (i = 0; i < L.last - 1; i++)
    {
        for (int j = 0; j < L.last - 1 - i; j++)
        {
            if (L.elem[j].price < L.elem[j + 1].price)
            {
                p = L.elem[j];
                L.elem[j] = L.elem[j + 1];
                L.elem[j + 1] = p;
            }
        }
    }

    for(i=0;i<L.last;i++)
    {
        printf("学号:%s 姓名:%s 成绩:%d\n\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
    }
    printf("\n");
}
//实现选择排序,实现从小到大的输出哈!
    public static void mySelectSort(int []inputdata){

        for(int i=0;i<inputdata.length-1;i++)
        {
            int minData=inputdata[i];
            for(int j=i+1;j<inputdata.length;j++)
            {
                if(inputdata[j]<minData)
                {
                    int temp=inputdata[j];
                    inputdata[j]=minData;
                    minData=temp;

                }

            }

            inputdata[i]=minData;
        }

    }