Advertisement
ViTruong

QuickSort_Student

Sep 23rd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.59 KB | None | 0 0
  1. #include<iostream>
  2. //#include<conio.h>
  3. #include<stdio.h>
  4. #include<string>
  5.  
  6. using namespace std;
  7.  
  8. struct SinhVien
  9. {
  10.     int n;
  11.     std::string MaSV;
  12.     std::string TenSV;
  13.     int NamSinh;
  14.     int Diem;
  15. };
  16.  
  17. void Swap(SinhVien &SV_First, SinhVien &SV_Second)
  18. {
  19.     std::string Temp_MaSV = SV_First.MaSV;
  20.     SV_First.MaSV = SV_Second.MaSV;
  21.     SV_Second.MaSV = Temp_MaSV;
  22.    
  23.     std::string Temp_TenSV = SV_First.TenSV;
  24.     SV_First.TenSV = SV_Second.TenSV;
  25.     SV_Second.TenSV = Temp_TenSV;
  26.    
  27.     int Temp_NamSinh = SV_First.NamSinh;
  28.     SV_First.NamSinh = SV_Second.NamSinh;
  29.     SV_Second.NamSinh = Temp_NamSinh;
  30.    
  31.     int Temp_Diem = SV_First.Diem;
  32.     SV_First.Diem = SV_Second.Diem;
  33.     SV_Second.Diem = Temp_Diem;
  34. }
  35.  
  36. void NhapDSSV(SinhVien ds[], int &n)
  37. {
  38.     cout<<"NHap Vao So Sinh Vien n:";
  39.     cin>>n;
  40.     for (int i=0;i<n;i++)
  41.     {
  42.         cout<<"\n\tNHap Thong Tin Sinh Vien Thu:"<<i+1;
  43.         cout<<"\n\t\t Nhap Ma Sinh Vien:";
  44.         //flushall();
  45.         //gets(ds[i].MaSV);
  46.         cin >> ds[i].MaSV;
  47.         cout<<"\n\t\t Nhap Ten Sinh Vien :";
  48.         //flushall();
  49.         //gets(ds[i].TenSV);
  50.         cin >> ds[i].TenSV;
  51.         cout<<"\n\t\t Nhap Nam Sinh Cua Sinh Vien:";
  52.         cin>>ds[i].NamSinh;
  53.         cout<<"\n\t\t NHap Diem Cua Sinh Vien:";
  54.         cin>>ds[i].Diem;
  55.     }
  56. }
  57. void XuatDSSV(SinhVien ds[], int n)
  58. {
  59.     cout<<"Thong Tin Sinh Vien Co Trong Danh Sach La :\n";
  60.     cout<<"\nMa SV"<<"\t"<<"Ten SV"<<"\t"<<"Nam Sinh"<<"\t"<<"DiemTB"<<endl;
  61.     cout<<"=======================================================\n";
  62.     for(int i=0;i<n;i++)
  63.         cout<<ds[i].MaSV<<"\t"<<ds[i].TenSV<<"\t"<<ds[i].NamSinh<<"\t"<<ds[i].Diem<<endl;
  64. }
  65. void  InterchangeSortTang (SinhVien ds[], int n)
  66. {
  67.     for(int i=0;i<n;i++)
  68.         for(int j=i+1;j<n;j++)
  69.             if(ds[i].Diem > ds[j].Diem)
  70.             {
  71.                 Swap(ds[i], ds[j]);
  72.                
  73.             }
  74. }
  75. void QuickSortTang(SinhVien ds[], int l , int r)
  76. {
  77.     int m=(l+r)/2; int x=ds[m].Diem;
  78.     int i=l;
  79.     int j=r;
  80.     do
  81.     {
  82.         while (ds[i].Diem<x)
  83.             i++;
  84.         while(ds[j].Diem>x)
  85.             j--;
  86.         {
  87.             Swap(ds[i], ds[j]);
  88.             i++;
  89.             j--;
  90.            
  91.         }
  92.     }
  93.     while (i<j);
  94.     if(l<j)
  95.         QuickSortTang(ds,l,j);
  96.     if(i<r)
  97.         QuickSortTang(ds,i,r);
  98. }
  99.  
  100. void main()
  101. {
  102.     SinhVien ds[50];
  103.     int n,x;
  104.     NhapDSSV(ds,n);
  105.     XuatDSSV(ds,n);
  106.     //InterchangeSortTang(ds,n);
  107.     //cout<<"\n DS Sinh Vien Co Diem Tang Dan Theo Interchangesort:";
  108.     //XuatDSSV(ds,n);
  109.     QuickSortTang(ds,0,n);
  110.     cout<<" Cac SV Diem Tang Dan Theo QuickSort :";
  111.     XuatDSSV(ds,n);
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement