冒泡排序

来源:互联网 发布:北魏冯太后 知乎 编辑:程序博客网 时间:2024/04/29 17:46

对一个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;

      }

}

 

 

原创粉丝点击