29
HỌC VIỆN BƯU CHÍNH VIỄN THÔNG HỆ ĐÀO TẠO ĐẠI HỌC TỪ XA BÀI TẬP ĐIỀU KIỆN HỌC KỲ 5 MÔN: CẤU TRÚC DỮ LIỆU Sinh viên: Hoàng Ngọc Cảnh Lớp: CN209A3 Mã sinh viên: 209201781

Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

Embed Size (px)

Citation preview

Page 1: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

HỌC VIỆN BƯU CHÍNH VIỄN THÔNGHỆ ĐÀO TẠO ĐẠI HỌC TỪ XA

BÀI TẬP ĐIỀU KIỆNHỌC KỲ 5

MÔN:

CẤU TRÚC DỮ LIỆU

Sinh viên: Hoàng Ngọc CảnhLớp: CN209A3Mã sinh viên: 209201781

Page 2: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

Phần1: Danh sách tuyến tính1. Khai báo biến ds để lưu trữ tối đa 1000 sinh viên (maso int, ho (C50), ten

C(10), malop (C8), diem float)2. Nhập danh sách sinh viên3. Viết CTC SaveList để ghi danh sách sinh viên trong ds vào file.4. Viết CTC OpenList để load dssv từ file vào bộ nhớ trong.5. Liet kê dssv của lớp có mã lớp X, và cho biết sĩ số sv của lớp đó.6. Liệt kê dssv của trường ra màn hình theo từng lớp.

BÀI LÀM

#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <string.h>

typedef struct tagSINHVIEN { int Msv;

char Ho[50]; char Hoten[10]; int ngay, thang, nam; float Toan; float Van; float TK;

int Lop;}SINHVIEN, *PSINHVIEN;

typedef struct tagNODE { SINHVIEN Data; tagNODE* Next;}NODE, *PNODE;

typedef struct tagLIST { NODE* Dau; NODE* Cuoi;}LISTSV, *PLIST;

//Khoi tao NODENODE* KhoitaoNode(){ NODE* x = (NODE*)malloc(sizeof(NODE)); if(x == NULL) { printf("\n Bo nho khong du "); return 0; }

Page 3: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

x->Next = NULL; return x;}

//Khoi tao danh sach LISTSVvoid KhoitaoList(LISTSV* x){ x->Dau = NULL; x->Cuoi=NULL;}

//Nhap thong tin sinh vienvoid Nhap (NODE* x){ char tg[25]; int a, d, m, y,l; float t, c; printf("\nNhap ma Sinh vien: "); scanf("%d", &a); x->Data.Msv = a; fflush(stdin);

printf("\nNhap Lop Sinh vien Dang Hoc: "); scanf("%d", &l);

x->Data.Lop = l; fflush(stdin); printf("Nhap ten Sinh Vien: "); gets(tg); strcpy(x->Data.Hoten,tg); fflush(stdin); do { printf("Nhap Ngay Sinh: "); scanf("%d", &d); fflush(stdin); }while(d > 31 || d < 1); x->Data.ngay = d; do { printf("Nhap Thang Sinh: "); scanf("%d", &m); fflush(stdin); }while(m > 12 || m < 1); x->Data.thang = m; do { printf("Nhap Nam Sinh: ");

Page 4: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

scanf("%d", &y); fflush(stdin); }while(y > 9999 || y < 1000); x->Data.nam = y; fflush(stdin); do { printf("Nhap Diem Toan: "); scanf("%f", &c); }while(c < 0 || c > 10); x->Data.Toan = c; fflush(stdin);

do { printf("Nhap Diem Van: "); scanf("%f", &t); }while(c < 0 || c > 10); x->Data.Van = t; x->Data.TK = (x->Data.Toan + x->Data.Van)/2; fflush(stdin); x->Next = NULL;}

//in sinh vienvoid InSV(NODE* p){ printf("\nMa Sinh vien: %d ",p->Data.Msv); printf("\tTen Sinh vien: %s ",p->Data.Hoten); printf("\nNgay/ Thang/ Nam sinh: %5d/%5d/%5d ", p->Data.ngay, p->Data.thang, p->Data.nam); printf("\nDiem Toan: %.2f ", p->Data.Toan); printf("\tDiem Van: %.2f ", p->Data.Van); printf("\tDiem tong ket: %.2f\n\n\n", p->Data.TK);}

// in danh sach SINHVIENvoid InDanhSach(LISTSV x){ NODE *p; p = x.Dau; while(p != NULL) { InSV(p); p = p->Next; }

Page 5: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

}

int demsiso(LISTSV x,int l){

int dem=0; NODE *p; p = x.Dau; while(p != NULL) {

if(p->Data.Lop=l){

dem++; p = p->Next;

} }

return dem;}//Them mot NODE vao Cuoi danh sachvoid ThemCuoi(LISTSV* x, NODE* t){ if(x->Dau == NULL) { x->Dau = t; } else { x->Cuoi->Next = t; } x->Cuoi = t;}

// Them mot sinh vien vao cuoi danh sachint NhapSV(LISTSV* x){ NODE* a = KhoitaoNode(); Nhap(a); ThemCuoi(x,a); return 0;}

//Tim kiem theo Ma sinh vienvoid TimKiem(LISTSV x , int n){ NODE *p; p = x.Dau; while(p != NULL)

Page 6: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

{ if(p->Data.Msv == n) { InSV(p); }else printf("\n Khong co sinh vien dat tieu chuan can tim\n"); p = p->Next; }}

//Xoa 1 Sinh Vien bat ki Theo ma Sinh Vienint XoaSV(LISTSV *x , int n){ NODE *p = x->Dau; NODE *q = NULL; while(p != NULL) { if(p->Data.Msv == n) break; q = p; p = p->Next; } if(p == NULL) return 0; if(q != NULL) { if(p == x->Dau) { x->Dau = q; q->Next = p->Next; free(p); } } else { x->Dau = p->Next; if(x->Dau == NULL) { x->Cuoi = NULL; } } return 1;}

//Giai phong bo nhovoid giaiphong(LISTSV *x){ NODE *p = x->Dau;

Page 7: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

NODE *a; while( p->Next != NULL) { a = p; p = p->Next; free(a); }}

//In cac Sinh Vien xep Loai Gioi

void lietkelop(LISTSV x,int n){ NODE *p; p = x.Dau; while(p != NULL) {

if(p->Data.Lop==n) { InSV(p); } else printf("\n Khong co sinh vien dat tieu chuan can tim\n"); p = p->Next; }}

//In cac Sinh Vien xep Loai Kha

//Dem so SINHVIEN Hoc Lai

// Liet ke Sinh vien Sinh vao thang 10

//Ham Tao Danh Sach Tuy chonint Menu(){ int a; int Ma;

int malop; LISTSV x;

int ss; KhoitaoList(&x); do {

Page 8: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

printf("\n Ban chon 1,2,3,4,5");printf("\n diem la bang= (Toan+van+TK) /3");

printf("\n\nNhap so can chon roi bam enter"); printf("\n\n\n 1 - Nhap danh sach Sinh Vien"); printf("\n 2 - Liet ke danh sach ca truong"); printf("\n 3 - Tim kiem Sinh vien theo ma "); printf("\n 7 - Tong So Sinh Vien Phai Hoc lai");

printf("\n 10- nhap vao ma lop de liet ke");printf("\n 11 - cho biet si so cua lop");

printf("\n 0 - Thoat\n"); scanf("%d",&a); switch(a) { case 1: { int n; printf("\nNhap so luong Sinh vien : "); scanf("%d",&n); for(int i = 1; i <= n ;i++) { printf("\nNhap Don vi Sinh vien thu: %d \n",i); NhapSV(&x); } break; } case 2: { InDanhSach(x); break; } case 3: { fflush(stdin); printf("\nNhap Ma Sinh Vien can tim:"); scanf("%d",&Ma); TimKiem(x ,Ma); break; } case 9: { fflush(stdin);

Page 9: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

printf("\nNhap Ma Sinh Vien Xoa:"); scanf("%d",&Ma); fflush(stdin); XoaSV(&x ,Ma); break; }

case 10: { fflush(stdin); printf("\nNhap Ma lop:"); scanf("%d",&malop); fflush(stdin); lietkelop(x ,malop); break; }

case 11: {

fflush(stdin); printf("\nNhap Ma lop de biet si so:"); scanf("%d",&ss); fflush(stdin); int ab=demsiso(x,ss);

printf("SI SO LA :%d",ab); break; } case 0: { break; } default: printf("\nBan chon sai vui long chon lai!"); } }while(a != 0); giaiphong(&x); return 1;}int main(){ //clrscr(); Menu(); // clrscr(); return 0;}

Page 10: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

Phần 2: Danh sách liên kết đơn1. Viết khai báo biến First để quản lý 1 dssv theo cấu trúc dslk đơn, mỗi sinh

viên có các thông tin sau (maso int, ho (C50), ten C(10), malop (C8), diem float)

2. Nhập danh sách sinh viên3. Viết CTC SaveList để ghi danh sách sinh viên trong ds vào file.4. Viết CTC OpenList để load dssv từ file vào bộ nhớ trong.5. Liet kê dssv của lớp có mã lớp X, và cho biết sĩ số sv của lớp đó.6. Liệt kê dssv của trường ra màn hình theo từng lớp.7. Viết CTC xóa 1 sinh viên có mã số là X. CTC trả về 1 nếu xóa được, và sẽ trả

về 0 nếu không xóa được8. Sắp xếp dssv theo thứ tự tăng dần theo mã số9. Giả sử ta đang có 1 dssv tăng dần theo mã số theo cấu trúc dslk đơn , viết

CTC thêm 1 sv vào dssv trên sao cho sau khi thêm thì dssv vẫn tăng dần theo mã số

Nếu sv thêm vào đã có mã số thì báo lỗi.

BÀI LÀM

#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <string.h>

typedef struct tagSINHVIEN { int Msv; char Hoten[35]; int ngay, thang, nam; float lo; float diem;

}SINHVIEN, *PSINHVIEN;

typedef struct tagNODE { SINHVIEN Data; tagNODE* Next;}NODE, *PNODE;

typedef struct tagLIST { NODE* Dau; NODE* Cuoi;}LISTSV, *PLIST;

Page 11: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

//Khoi tao NODENODE* KhoitaoNode(){ NODE* x = (NODE*)malloc(sizeof(NODE)); if(x == NULL) { printf("\n Bo nho khong du "); return 0; } x->Next = NULL; return x;}

//Khoi tao danh sach LISTSVvoid KhoitaoList(LISTSV* x){ x->Dau = NULL; x->Cuoi=NULL;}

//Nhap thong tin sinh vienvoid Nhap (NODE* x){ char tg[25]; int a, d, m, y; float c; printf("\nNhap ma Sinh vien: "); scanf("%d", &a); x->Data.Msv = a; fflush(stdin); printf("Nhap ten Sinh Vien: "); gets(tg); strcpy(x->Data.Hoten,tg); fflush(stdin); do { printf("Nhap Ngay Sinh: "); scanf("%d", &d); fflush(stdin); }while(d > 31 || d < 1); x->Data.ngay = d; do { printf("Nhap Thang Sinh: "); scanf("%d", &m);

Page 12: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

fflush(stdin); }while(m > 12 || m < 1); x->Data.thang = m; do { printf("Nhap Nam Sinh: "); scanf("%d", &y); fflush(stdin); }while(y > 9999 || y < 1000); x->Data.nam = y; fflush(stdin); do { printf("Nhap Diem : "); scanf("%f", &c); }while(c < 0 || c > 10);

x->Data.diem = c; fflush(stdin); }

//in sinh vienvoid InSV(NODE* p){ printf("\nMa Sinh vien: %d ",p->Data.Msv); printf("\tTen Sinh vien: %s ",p->Data.Hoten); printf("\nNgay/ Thang/ Nam sinh: %5d/%5d/%5d ", p->Data.ngay, p->Data.thang, p->Data.nam);

printf("\nDiem Toan: %.2f ", p->Data.diem);

}

// in danh sach SINHVIENvoid InDanhSach(LISTSV x){ NODE *p; p = x.Dau; while(p != NULL) { InSV(p); p = p->Next; }}

//Them mot NODE vao Cuoi danh sach

Page 13: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

void ThemCuoi(LISTSV* x, NODE* t){ if(x->Dau == NULL) { x->Dau = t; } else { x->Cuoi->Next = t; } x->Cuoi = t;}

// Them mot sinh vien vao cuoi danh sachint NhapSV(LISTSV* x){ NODE* a = KhoitaoNode(); Nhap(a); ThemCuoi(x,a); return 0;}

//Tim kiem theo Ma sinh vienvoid TimKiem(LISTSV x , int n){ NODE *p; p = x.Dau; while(p != NULL) { if(p->Data.Msv == n) { InSV(p); }else printf("\n Khong co sinh vien dat tieu chuan can tim\n"); p = p->Next; }}

//Xoa 1 Sinh Vien bat ki Theo ma Sinh Vienint XoaSV(LISTSV *x , int n){ NODE *p = x->Dau; NODE *q = NULL; while(p != NULL) { if(p->Data.Msv == n) break;

Page 14: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

q = p; p = p->Next; } if(p == NULL) return 0; if(q != NULL) { if(p == x->Dau) { x->Dau = q; q->Next = p->Next; free(p); } } else { x->Dau = p->Next; if(x->Dau == NULL) { x->Cuoi = NULL; } } return 1;}

//Giai phong bo nhovoid giaiphong(LISTSV *x){ NODE *p = x->Dau; NODE *a; while( p->Next != NULL) { a = p; p = p->Next; free(a); }}

int Menu(){ int a; int Ma; LISTSV x; KhoitaoList(&x);

Page 15: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

do { printf("\n Ban chon 1,2,3,4,5"); printf("\n\nNhap so can chon roi bam enter"); printf("\n\n\n 1 - Nhap danh sach Sinh Vien"); printf("\n 2 - Liet ke danh sach Sinh Vien"); printf("\n 3 - Tim kiem Sinh vien theo ma Hang"); printf("\n 9 - Xoa Sinh Vien theo Ma Sinh Vien"); printf("\n 0 - Thoat\n"); scanf("%d",&a); switch(a) { case 1: { int n; printf("\nNhap so luong Sinh vien : "); scanf("%d",&n); for(int i = 1; i <= n ;i++) { printf("\nNhap Don vi Sinh vien thu: %d \n",i); NhapSV(&x); } break; } case 2: { InDanhSach(x); break; } case 3: { fflush(stdin); printf("\nNhap Ma Sinh Vien can tim:"); scanf("%d",&Ma); TimKiem(x ,Ma); break; } case 9: { fflush(stdin); printf("\nNhap Ma Sinh Vien Xoa:"); scanf("%d",&Ma); fflush(stdin); XoaSV(&x ,Ma);

Page 16: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

break; } case 0: { break; } default: printf("\nBan chon sai vui long chon lai!"); } }while(a != 0); giaiphong(&x); return 1;}int main(){ Menu();

return 0;}

Phần 3: Cây nhị phân tìm kiếm1. Viết CTC đếm tổng số nút, tổng số nút lá trong cây nhị phân có gốc là tree.2. Viết CTC tính độ cao của cây nhị phân có gốc là tree.3. Viết CTC kiểm tra cây nhị phân tree có phải là cây nhị phân đúng hay không

?4. Viết CTC kiểm tra cây nhị phân tree có phải là cây nhị phân đầy hay

không ?5. Giả sử ta có 1 dssv theo cấu trúc là cây nhị phân tìm kiếm với khoá là mã

sinh viên. Hãy viết 1 CTC chuyển dssv này qua cấu trúc dữ liệu mới là danh sách tuyến tính thỏa các tính chất sau:

- Bộ nhớ cấp phát cho dstt là vừa đủ- Dstt sẽ có thứ tự tăng dần theo mã số ( không dùng thuật toán sắp xếp)

BÀI LÀM

#include <iostream>#include <conio.h>#include <stdio.h>#include <math.h>using namespace std;

typedef struct tagTNode{

int Key;

Page 17: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

struct tagTNode *pLeft;struct tagTNode *pRight;

}TNode;

typedef TNode *TREE;

void CreateTree(TREE &T){

T=NULL;}

TNode *CreateTNode(int x){

TNode *p;p=new TNode;if(p==NULL)

exit(1);else{

p->Key=x;p->pLeft=NULL;p->pRight=NULL;

}return p;

}

void AddTNode(TREE &T,TNode *q){

if(T==NULL)T=q;

else if(T->Key>q->Key)AddTNode(T->pLeft,q);

elseAddTNode(T->pRight,q);

}

void PrintTNode(TREE T){

if(T!=NULL){

cout<<T->Key<<"\n";PrintTNode(T->pLeft);PrintTNode(T->pRight);

}}

Page 18: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

void Nhap(TREE &T){

int n;cout<<"Nhap so nut: ";cin>>n;int temp;for(int i=0;i<n;i++){

cout<<"Nhap so: ";cin>>temp;AddTNode(T,CreateTNode(temp));

}}

int CountTNode(TREE T){

if(T!=NULL)return CountTNode(T->pLeft)+CountTNode(T->pRight)+1;

elsereturn 0;

}

int Max(int a,int b){

if(a>b)return a;

elsereturn b;

}

int Depth(TREE T){

if (T==NULL) return 0;return Max(Depth(T->pLeft),Depth(T->pRight))+1;

}

TREE LeftChild(TREE T){

if(T!=NULL)return T->pLeft;

elsereturn NULL;

}

TREE RightChild(TREE T){

Page 19: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

if(T!=NULL)return T->pRight;

elsereturn NULL;

}

int isLeaf(TREE T){

if(T!=NULL)return (LeftChild(T)==NULL)&&(RightChild(T)==NULL);

elsereturn 0;

}

int CountTNodeLeaf(TREE T){

if(isLeaf(T))return 1;

else if(T->pLeft==NULL)return CountTNodeLeaf(T->pRight);

else if(T->pRight==NULL)return CountTNodeLeaf(T->pLeft);

elsereturn CountTNodeLeaf(T->pRight) + CountTNodeLeaf(T->pLeft);

}

int Mu(int a, int somu){

int tich=1;for(int i=1;i<=somu;i++)

tich*=a;return tich;

}

bool isFull(TREE T){

if(CountTNodeLeaf(T)==Mu(2,Depth(T)-1))return true;

elsereturn false;

}

bool isBynary(TREE T){

if(T==NULL)return true;

Page 20: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

else if(((T->pLeft!=NULL)&&(T->pLeft->Key>T->Key))||((T->pRight!=NULL)&&(T->pRight->Key<T->Key)))

return false;else

return (isBynary(T->pLeft))&&(isBynary(T->pRight));}

void main(){

TREE T;CreateTree(T);Nhap(T);PrintTNode(T);cout<<"So nut: "<<isBynary(T);getch();

}

Phần 4: Sắp xếp danh sáchViết chương trình minh họa các phương pháp sắp xếp. Chương trình có các chức năng sau:

a. Nhập ngẫu nhiên n số vào danh sách với n khoảng 30000 số .

b. Chọn phương pháp sắp xếp, và báo thời gian thực hiện quá trình sắp xếp của các thuật toán : Bubble Sort, Insertion Sort, Selection Sort, Quick Sort,

BÀI LÀM

#include <conio.h>#include <stdio.h>#include <windows.h>#include <iostream>#include <ctime>using namespace std;

void Swap(int &a,int &b){

int temp;temp=a;a=b;b=temp;

}

void BubbleSort(int *a,int n){

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

Page 21: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

for(int j=n-1;j>i;j--)if(a[j]<a[j-1])

Swap(a[j],a[j-1]);}

void InsertionSort(int *a,int n){

int pos,x;for(int i=0;i<n;i++){

x=a[i];pos=i-1;while((pos>=0)&&(a[pos]>x)){

a[pos+1]=a[pos];pos--;

}a[pos+1]=x;

}}

void SelectionSort(int *a,int n){

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

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

if(a[j]<a[min])min=j;

Swap(a[min],a[i]);}

}

void QuickSort(int *a, int left, int right){

int x,i,j;x=a[(left+right)/2];i=left;j=right;do{

while(a[i]<x) i++;while(a[j]>x) j--;if(i<=j){

Page 22: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

Swap(a[i],a[j]);i++;j--;

}}while(i<=j);if(left<j)

QuickSort(a,left,j);if(i<right)

QuickSort(a,i,right);}

void LoadData(char *url, int *a, int n){

FILE *fp;if((fp=fopen(url,"r"))==NULL){

printf("Cannot open file \n\n");exit(1);

}int temp;for(int i=0;i<n;i++){

fscanf(fp,"%d",&temp);a[i]=temp;

}}

void CreateData(char *url,int n){

FILE *fp;if((fp=fopen(url,"w"))==NULL){

printf("Cannot open file \n\n");exit(1);

}srand((unsigned)time(NULL));for(int i=0;i<n;i++){

fprintf(fp,"%d\n",rand());}fclose(fp);

}

void Result(char *url,int *a,int n){

FILE *fp;

Page 23: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

if((fp=fopen(url,"w"))==NULL){

printf("Cannot open file \n\n");exit(1);

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

fprintf(fp,"%d\n",a[i]);}fclose(fp);

}

void main(){

char *url = "Test.txt";int n;int a[30000];cout<<"Nhap so phan tu n: ";cin>>n;CreateData(url,n);LoadData(url,a,n);cout<<"Chon phuong phap sap xep (Bam so thu tu de chon):";cout<<"\n\n 1. BUBBLE SORT";cout<<"\n 2. INSERTION SORT";cout<<"\n 3. SELECTION SORT";cout<<"\n 4. QUICK SORT";cout<<"\n\nChon: ";char c = getch();unsigned int start_time;unsigned int end_time;switch(c){case '1':

cout<<"\nBan chon thuat toan BUBBLE SORT. Vui long doi.";start_time = clock();BubbleSort(a,n);end_time = clock();break;

case '2':cout<<"\nBan chon thuat toan INSERTION SORT. Vui long doi.";start_time = clock();InsertionSort(a,n);end_time = clock();break;

case '3':cout<<"\nBan chon thuat toan SELECTION SORT. Vui long doi.";

Page 24: Cau Truc Du Lieu Cn209a3 Hoang Ngoc Canh 209201781 Hoc Ky 5

start_time = clock();SelectionSort(a,n);end_time = clock();break;

case '4':cout<<"\nBan chon thuat toan QUICK SORT. Vui long doi.";start_time = clock();QuickSort(a,0,n-1);end_time = clock();break;

}printf("\nThoi gian thuc hien: %f (giay)",(float)(end_time-start_time)/1000);Result("Result.txt",a,n);getch();

}