You are on page 1of 6

/* Co 5 phuong phap :

+ Selection Sort (Chon truc tiep)

+ Interchange Sort(Doi cho truc tiep)

+ Insert Sort (Chen truc tiep)

+ Bubble Sort (Sap xep noi bot)

+ Quick Sort (Sap xep nhanh)

*/

//SAP XEP TREN MANG THONG THUONG (MANG SINH VIEN) :

void swap(sinhvien &a,sinhvien &b){

sinhvien temp;

temp = a;

a = b;

b = temp;

//===================================================

void selection_sort(sinhvien sv[],int n){

int vtmin;

for(int i=0;i<n-1;i++){

vtmin = i;

for(int j=i+1;j<n;j++)

//if(strcmp(sv[j].ten,sv[vtmin].ten)<0) - sap xep theo ten

if (strcmp(sv[j].ten,sv[vtmin].ten)>0||((strcmp(sv[j].ten,
sv[vtmin].ten)==0)&&sv[j].masv<sv[vtmin].masv))

//sap xep theo ten, cung ten theo ma

vtmin = j;
if(vtmin !=i)

swap(sv[vtmin],sv[i]);

//======================================================

void interchange_sort(sinhvien sv[],int n){

for(int i=0;i<n-1;i++)

for(int j=i+1;j<n;j++)

if(strcmp(sv[i].ten,sv[j].ten) >0||((strcmp(sv[i].ten,sv[j].ten)==0) &&


sv[i].masv>sv[j].masv))

swap(sv[i],sv[j]);

//=========================================================

void insert_sort(sinhvien sv[],int n){

int i,pos;

sinhvien x;

for(int i= 1;i<n;i++){

x = sv[i];

pos = i;

while(pos >0 && sv[pos - 1].masv>x.masv){

sv[pos] = sv[pos -1];

pos --;

sv[pos] = x;

}
//========================================================

void bubble_sort(sinhvien sv[],int n){

for(int i=0;i<n-1;i++)

for(int j=n-1;j>i;j--)

if(sv[j].masv<sv[j-1].masv)

swap(sv[j],sv[j-1]);

//========================================================

void quick_sort(sinhvien sv[],int left,int right){

int i,j;

int x;

if(left > right) return;

x = sv[(left + right)/2];

i = left;j=right;

do{

while(sv[i].masv < x) i++;

while(sv[j].masv > x) j--;

if(i<=j){

swap(sv[i],sv[j]);

i++;j--;

}while(i<=j);

if(left<j) quick_sort(sv,left,j);

if(i<right) quick_sort(sv,i,right);

}
//=========================================================

//---------------------------------------------------------

//SAP XEP TRONG DANH SACH LIEN KET DON:

void swap(data &a , data &b)

data temp;

temp = a;

a = b;

b = temp;

//-------------------------------------------------------------

void Selection_Sort(LList L){

Node *i,*j,*vtmin;

for(i = L.pH;i->link!=NULL;i=i->link)

vtmin = i;

for(j=i->link;j!=NULL;j=j->link)

if(strcmp(i->infor.ten,j->infor.ten) >0 ||((strcmp(i->infor.ten,j->infor.ten)==0)


&& (i->infor.ma > j->infor.ma)))

vtmin = j;

if(vtmin != i)

swap(i->infor,j->infor);

//=============================================================

Node *truoc(Llist L,Node *pp)//Lui ve Node truoc

if(pp==L.pH) return NULL;


Node *q=L.pH;

while(q->link!=pp)

q=q->link;

return q;

//---------------------------------------------------------------

void Bubble_Sort(Llist L)

for(Node *i=L.pH;i->link!=NULL;i=i->link)

for(Node *j=L.pT;j!=i;j=truoc(l,j))

if(j->infor.masv<truoc(l,j)->infor.masv)// xap sep theo msv

swap(j->infor,truoc(l,j)->infor);

//=================================================================

void insertion_sort(Llist L)

for(Node *i = L.pH->link ; i != NULL ; i = i->link)

data x = i->infor;

Node *pos = i;

while(pos != L.pH && x.masv < truoc(l,pos)->infor.masv)

pos->infor = truoc(l,pos)->infor;

pos = truoc(l,pos);

}
pos->infor = x;

//================================================================

void interchange_sort(Llist L)

for(Node *i = L.pH ; i->link != NULL ; i = i->link)

for(Node *j = i->link ; j != NULL ; j = j->link)

if(strcmp(i->infor.ten,j->infor .ten)>0||((strcmp(i->infor.ten,j->infor .ten)==0


&&i->infor.dtb<j->infor.dtb))

swap(i->infor,j->infor);

//=================================================================

You might also like