我会一维数组插入排序,我依理写的结构数组排序怎么就错了? 结构数组,插入排序
[解决办法]
我把升序情況改了,結果如圖,降序情況你可以自己改改,權當練習.
#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;
}
break;
case 'd':
for(int j=0;j!=num;j++)
{
double key=p_s[j].Avg;
int i=j-1;
while( i>-1 && p_s[i].Avg<key)
{
p_s[i+1]=p_s[i];
i--;
}
p_s[i+1]=p_s[j];
}
break;
}
}
int main ()
{
data();
cout<<"排序方式 a升 d减少";
char ad;
cin>>ad;
select_sort (ad, p_s);
//输出全部人结果
cout<<"根据平均分排名后: "<<endl;
for(int i=0;i!=num;i++)
cout<<"学号 "<<p_s[i].ID
<<"姓名 "<<p_s[i].name
<<"平均分 "<<p_s[i].Avg<<endl;
//回收内存
delete []p_s;
}