对一个Person结构数组进行"冒泡法"排序,工资高的排在 后面.
#include <iostream.h>
struct Person
{
char name[20];
unsigned long id;
float salary;
};
Person allone[6]={{"jone",12345,339.0},
{"david",13916,449.0},
{"marit",27519,331.0,},
{"jasen",42876,623.0},
{"peter",23987,400.0},
{"yoke",12335,511.0}
};
//***************************************
法一:交换结构变量值
//***************************************
void main()
{
Person temp;
for(int i=1;i<6;i++) //排序
{
for(int j=0;j<=5-i;j++)
{
if(allone[j].salary >allone[j+1].salary)
{
temp = allone[j];
allone[j]=allone[j+1];
allone[j+1]=temp;
}
}
}
for(int k=0;k<6;k++) //out
{
cout <<allone[k].name<< " "
<<allone[k].id<<“ ”
<<allone[k].salary<<endl;
}
}
//***************************************
法二:效率更高:交换结构指针
//***************************************
void main()
{
Person* pA[6]={&allone[0], &allone[1],&allone[2],&allone[3],&allone[4],&allone[5], };
Person temp;
for(int i=1;i<6;i++) //排序
{
for(int j=0;j<=5-i;j++)
{
// if(allone[j].salary >allone[j+1].salary)
if(pA[j]->salary > pA[j+1]->salary)
{
temp = pA[j];
pA[j]=pA[j+1];
pA[j+1]=temp;
}
}
}
for(int k=0;k<6;k++) //out
{
cout <<pA[k]->name<< " "
<<pA[k]->id<<“ ”
<<pA[k]->salary<<endl;
}
}