小弟我会一维数组插入排序,小弟我依理写的结构数组排序如何就错了

我会一维数组插入排序,我依理写的结构数组排序怎么就错了?
小弟我会一维数组插入排序,小弟我依理写的结构数组排序如何就错了
结构数组,插入排序

------解决方案--------------------
我把升序情況改了,結果如圖,降序情況你可以自己改改,權當練習.

#include <iostream>
using namespace std;
 
//定义全局变量等
struct s
{
    char ID[15];
    double S1,S2,S3,Avg;
    char name[15];
};
int num;
s *p_s=NULL;
 
//数据输入及平均分填充
void data()
{    cout<<"请输入总人数"<<endl;
    cin>>num;
    p_s = new s[num];
 
    for(int i=0;i!=num;i++) 
        {
            cout<<"依次输入ID 分数1 分数2 分数3 姓名 中间以回车或空格区分"<<endl;
            cin>>p_s[i].ID>>p_s[i].S1>>p_s[i].S2>>p_s[i].S3>>p_s[i].name;
        }
    //数据处理计算出平均值填充
    for(int i=0;i!=num;i++) 
        p_s[i].Avg=(p_s[i].S1+p_s[i].S2+p_s[i].S3)/3;
}
 
//排序   
void select_sort (char  ad, s* p_s)
{   
    switch(ad)
    {
        case 'a':
     
            for(int j=0;j!=num;j++)
                {
                     //double key=p_s[j].Avg;
                     s key;                     
                     key = p_s[j];
                     int i=j-1;
                     while( i>-1 && p_s[i].Avg>key.Avg)
                         {
                              p_s[i+1]=p_s[i];
                             i--;
                         }
                     //p_s[i+1]=p_s[j];
                     p_s[i+1] = key;