Em đang làm bài tập thầy giao về sắp xếp danh sách theo tên bằng thuật toán trộn
#include<iostream>
#include<iomanip>
using namespace std;
struct HS
{
string ten;
string hd;
int ns;
string dc;
};
void xuat(HS a)
{
cout<<a.ten<<setw(10)<<a.hd<<setw(10)<<a.ns<<setw(15)<<a.dc<<endl;
}
void xuatN(HS a[],int n)
{
for(int i=0;i<n;i++)
{
xuat(a[i]);
}
}
void tron(HS a[],int l,int m,int r)
{
HS b[m-l+1];HS c[r-m];
for(int i=0;i<m-l+1;i++)
{
b[i].ten=a[l+i].ten;
}
for(int j=0;j<r-m;j++)
{
c[j].ten=a[m+1+j].ten;
}
int i=0,j=0,k=l;
while(i<m-l+1&&j<r-m)
{
if (b[i].ten <= c[j].ten)
{
a[k].ten = b[i].ten;
i++;
}
else
{
a[k].ten = c[j].ten;
j++;
}
k++;
}
while(i<m-l+1)
{
a[k].ten=b[i].ten;
i++;
k++;
}
while(j<r-m)
{
a[k].ten=c[j].ten;
j++;
k++;
}
}
void sapxep(HS a[],int l,int r)
{
if(l<r)
{
int m=(l+r)/2;
sapxep(a,l,m);
sapxep(a,m+1,r);
tron(a,l,m,r);
}
}
int main()
{
HS a[6]=
{
{"anh","nguyen",2002,"ha noi"},
{"duc","le",2001,"thai binh"},
{"dung","luu",2000,"thai nguyen"},
{"nhi","tran",2003,"hai phong"},
{"vy","ly",2004,"nam dinh"},
{"dan","ma",2005,"bac kan"},
};
sapxep(a,0,5);
cout<<"-Danh sach sau sap xep"<<endl;
cout<<"ten"<<setw(10)<<"hodem"<<setw(10)<<"namsinh"<<setw(15)<<"diachi"<<endl;
xuatN(a,6);
}
Kết quả là có sắp xếp được theo tên nhưng các thông tin còn lại chưa được sắp xếp thì em nhờ mọi người giúp em với ạ.Em xin cảm ơn!