1. Trang chủ
  2. » Luận Văn - Báo Cáo

thảo luận hệ thống thông tin quản lý cho mảng 50 pt số nguyên, viết phương trình gồm hàm nhập, sắp xếp, tìm pt theo yêu cầu

35 228 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 124 KB

Nội dung

Câu 1: Đề 01: cho mảng 50 pt số nguyên, viết phương trình gồm hàm nhập, sắp xếp, tìm pt theo yêu cầu sau: - Nhập mảng - Sắp xếp theo kiểu chèn tìm các pt âm và in ra vị trí của nó trong mảng  Đánh giá độ phức tạp của thuật toán: nhỏ nhất, lớn nhất. //Mang 1 chieu toi da 50 pt sap xep chen, tim va tin ra vt phan tu am //In ra cac vi tri le xong moi sap xep #include<stdio.h> #include<conio.h> void NhapMang(int a[],int &n) { printf("Nhap so phan tu cua mang: "); scanf("%d",&n); for(int i=0; i<n; i++) { printf("Nhap phan tu thu %d: ",i+1); scanf("%d",&a[i]); } } void XuatMang(int a[], int n) { printf("Noi dung cua mang la: "); for(int i=0; i<n; i++) printf("%d ",a[i]); printf("\n"); } 1 //In void TimPTAm(int a[], int n) { int dem=0; for(int i=0; i<n; i++) { if(a[i]<0) { printf("Phan tu: %d, o vi tri: %d\n",a[i],i+1); dem++; } } if(dem==0) printf("Khong co phan tu am"); } //Sap xep chen void sxchen(int a[],int n) { int i,j,k,temp; for(i=1;i<n;i++) { temp=a[i]; j=i-1; while(a[j]>temp && j>=0) { a[j+1]=a[j]; j ; } a[j+1]=temp; } } 2 int main() { int a[50],n; NhapMang(a,n); XuatMang(a,n); printf("Cac phan tu am: \n"); TimPTAm(a,n); sxchen(a,n); printf("Sau khi duoc xap xep. "); XuatMang(a,n); getch(); return 0; } /* Do phuc tap: 1. Sx chèn: TH1: Tot nhat mang da sap xep tang Nhu vay ta tim ngay duoc vi tri thich hop de chen dau tien ma ko can vao vong lap i chay tu 1 den n-1 so phep so sanh la n-1 So phep gan: Gmin=2(n-1) (2 phep gan thuat toan ko chay vao vong lap j) Do phuc tap: O(n) TH2: Xau nhat Vi tri chen luon la vi tri dau tien cua day da co thu tu So phep so sanh la: (n-1) + (n-2) + +1 = n(n-1)/2 So phep gan la: Gmax=Gmin+ =2(n-1) + Smin.1=2(n-1) + n(n-1)/2 Do phuc tap: O(n^2) 3 2. Sx nổi bọt: void sxnoibot(int a[],int n) { int i,j,temp; for(i=0;i<n;i++) for(j=n-1;j>i;j ) if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } • Độ phức tạp: TH1: Tot nhat la mang da co thu tu tang So phep hoan vi: Hmin=0; TH2: Xau nhat la mang co thu tu giam Lan thu nhat duyet khoang n-1 phep so sanh, lan thu 2 duyet khoang n-2 phep so sanh So phep hoan vi: Hmin=(n-1) + n(n-2) + + 2 +1 =n(n-1)/2 So phep hoan vi trung binh: Htb=n(n-1)/4 Vay do phuc tap cua thuat toan la: O(n^2) 3. Sx chọn: void sxchon(int a[],int n) { for(int i=0;i<n-1;i++) { int min=i; for(int j=i+1;j<n;j++) if(a[j]<a[min]) min=j; int temp=a[i]; a[i]=a[min]; a[min]=temp; } } • Độ phức tạp Trong moi truong hop: So phep so sanh la: S=(n-2)+(n-1)+ +2+1=n(n-1)/2 So phep hoan vi: n-1 lan 4 TH1: TH tot nhat mang da duoc sap xep roi So phep gan Gmin=2(n-1) TH2: Mang co thu tu giam dan So phep gán: Gmax=2[n+ (n-1) + +1]=n(n+1) So phep gan trung binh: Gtb=n-1 + n(n+1)/2 Do phuc tap: O(n^2) 4. Sx nhanh void sxnhanh(int a[],int left,int right) { int i,j,x; i=left; j=right; x=a[left]; do { while(a[i]<x && i<right) i++; while(a[j]>x && j>left) j ; if(i<=j) { int temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j ; } } while(i<=j); if(i<right) sxnhanh(a,i,right); if(j>left) sxnhanh(a,left,j); } 5 Đề 3: cho 1 mảng số nguyên gồm tối đa 50 pt. Viết chương trình trong đó XĐ các hàm có chức năng nhập, sắp xếp, tìm kiếm và in ra kết quả để: - Nhập mảng - Sắp xếp mảng theo thuật toán chèn - Tìm và in ra giá trị và vị trí của pt đầu tiên trong mảng mà chia hết cho 5  Đánh giá độ phức tạp của thuật toán trong các trường hợp tốt nhất, xấu nhất // Do phuc tap: TH1: Tot nhat mang da sap xep tang Nhu vay ta tim ngay duoc vi tri thich hop de chen dau tien ma ko can vao vong lap i chay tu 1 den n-1 so phep so sanh la n-1 So phep gan: Gmin=2(n-1) (2 phep gan thuat toan ko chay vao vong lap j) Do phuc tap: O(n) TH2: Xau nhat Vi tri chen luon la vi tri dau tien cua day da co thu tu So phep so sanh la: (n-1) + (n-2) + +1 = n(n-1)/2 So phep gan la: Gmax=Gmin+ =2(n-1) + Smin.1=2(n-1) + n(n-1)/2 Do phuc tap: O(n^2) Mảng 2 chiều: #include <conio.h> #include <iostream.h> #define max 100 typedef int matran[max][max]; matran a; void nhap(matran a,int m,int n) //m :hang; n:cot { int i,j; for(i=0;i<m;i++) for(j=0;j<n;j++) { cout<<"Nhap phan tu a["<<i<<"]["<<j<<"] = "; cin>>a[i][j]; } } void xuat(matran a,int m,int n) { int i,j; 6 for(i=0;i<m;i++) {for(j=0;j<n;j++) {cout<<a[i][j]<<" ";} cout<<"\n";} } void timptu(matran a,int m,int n,int x) //tim vitri phan tu co gia tri x { int i,j; for(i=0;i<m;i++) for(j=0;j<n;j++) { if(a[i][j]==x) cout<<"Phan tu "<<x<<" thuoc hang " <<i<<"cot"<<j; } } int tongcotchan(matran a,int m,int n) //tong phan tu o cot chan { int i,j,s=0; for(i=0;i<m;i++) for(j=0;j<n;j++) { if(j%2==0) s=s+a[i][j]; } return s; } int demspt(matran a,int m,int n) //dem so phan tu chia het cho 3 { int i,j,dem=0; for(i=0;i<m;i++) for(j=0;j<n;j++) { if(a[i][j]%3==0) dem++; } } int sapxepnoibottheohang(matran a,int x,int n) //sapxep giam dan noi bot hang x { int i,j; //hang x -> i=x-1 for(i=0;i<n-1;i++) for(j=n;j>i;j ) if(a[x-1][j]>a[x-1][j-1]) { int temp=a[x-1][j-1]; a[x-1][j-1]=a[x-1][j]; a[x-1][j]=temp; } 7 } void sapxepchontheohang(matran a,int x,int n) //sapxep chon theo hang x { int i,j,m,temp; //hang x -> i=x-1 for(i=0;i<n-1;i++) { m=i; for(j=i+1;j<n;j++) if(a[x-1][j]<a[x-1][m]) m=j; temp=a[x-1][i]; a[x-1][i]=a[x-1][m]; a[x-1][m]=temp; } } void sxchen(matran a,int x,int n) //sx chen tang dan theo hang x { int i,j,temp; for(i=1;i<n;i++) { temp=a[x-1][i]; j=i-1; while(a[x-1][j]>temp && (j>=0)) { a[x-1][j+1]=a[x-1][j]; j ; } a[x-1][j+1]=temp; } } int main() { int m,n,x; cout<<"Nhap so hang: "; cin>>m; cout<<"Nhap so cot: "; cin>>n; nhap(a,m,n); cout<<"Nhap hang can sapxep: "; cin>>x; sapxepnoibottheohang(a,x,n); sapxepchontheohang(a,x,n); sxchen(a,x,n); xuat(a,m,n); getch(); } 8 Câu 2: Đề 01: viết trương trình tạo một hàng đợi với các thao tác ktra rong, PUSH, POP, ktao //Cai dat hang doi bang dslk #include<stdio.h> #include<conio.h> #include<stdlib.h> struct node { int item; struct node *next; }; typedef struct node *queuenode; typedef struct { queuenode head; queuenode tail; }queue; void QueueInitialize(queue *q) { q->head=q->tail=NULL; return; } int QueueEmpty(queue q) { return (q.head==NULL);} void Put(queue *q, int x) { queuenode p; p=(queuenode) malloc (sizeof(struct node)); p->item=x; p->next=NULL; 9 if(q->tail==NULL) q->tail=p;//Trong TH hang doi rong else { q->tail->next =p; q->tail=q->tail->next; } if(q->head==NULL) q->head=q->tail; //Trong TH hang doi rong return; } int Get(queue *q) { queuenode p; if(QueueEmpty(*q)) printf("Hang doi rong"); else { p=q->head; q->head=q->head->next; return p->item; } } int main() { queue q; int n, x, tong=0; QueueInitialize(&q); printf("Nhap so luong phan tu muon them: "); scanf("%d", &n); for(int i=0; i<n; i++) { printf("Nhap phan tu thu %d: ", i+1); scanf("%d", &x); 10 [...]... khoitao(s); cout10 - Tính tổng giá trị của các phần tử nhập từ bàn phím - Tìm và in ra giá trị các phần tử lớn hơn x A, B, //Cay nhi phan tim kiem Tinh tong so nut > 10 //In ra so nut > 10 #include... trúc lưu trữ mảng: hình thức lưu trữ kế tiêp -địa chỉ các phần tử nối tiếp nhau -các phần tử sắp xếp theo hang -bộ nhớ cố định *đặc điểm -cấu trúc đơn giản , truy cập nhanh -thiếu mềm dẻo trong phép xóa, chèn DANH SÁCH: *khái niệm: danh sách là 1 tập có thứ tự gồm các phần tử cùng kiêu: - các phần tử biến động -các phần tử sắp xếp theo thứ tự trước- sau *Danh sách tuyến tinh: là quan hệ lân cận giữa... tri lon hon 10 la: "); timpt(root); printf("\nTong gia tri cac phan tu cua cay: %d", bistree_tong(root)); printf("\nNhap phan tu x: "); scanf("%d", &x); if(demptx(root,x)==0) printf("Khong co phan tu lon hon x"); else { printf("Cac phan tu co gia tri lon hon x la: "); timptx(root,x); } getch(); return 0; } 25 Đề - Cài đặt câynhị phân tìm kiếm - Tính số nút và số nút lá của cây, số nhánh của cây - Tính... tu lon hon x //Dem phan tu lon hon x int demptx(bistree root, int x) { if(root!=NULL) { int a=demptx(root->left, x); int b=demptx(root->right, x); if(root->item > x ) return a + b + 1; return a+b; } return 0; } //In ra phan tu lon hon x void timptx(bistree root, int x) { if(root!=NULL) { if(root->item > x) printf("%d ",root->item); timptx(root->left, x); timptx(root->right, x); } } int main() { int n,... ",root->item); } } 22 //Tinh tong so nut > 10 int bistree_tong10(bistree root) { If(root!=NULL) { int a=bistree_tong10(root->left); int b=bistree_tong10(root->right); if(root->item > 10) return a + b + 1; return a+b; } return 0; } //In ra so nut > 10 void timpt(bistree root) { if(root!=NULL) { if(root->item > 10) printf("%d ",root->item); timpt(root->left); timpt(root->right); } } //Tinh tong gia tri cac... return NewNode; } //Tinh chieu cao cua cay int bistree_high(bistree root) { if(root==NULL) return 0; int HTL=bistree_high(root->left); int HTR=bistree_high(root->right); if(HTL>HTR) return (HTL+1); return (HTR+1); } //Tinh so nut cua cay int bistree_nut(bistree root) { if(root==NULL) return 0; int NNL=bistree_nut(root->left); int NNR=bistree_nut(root->right); return (NNL+NNR+1); } //Tinh so nut la int... a1,a2, an) -n là độ dài /kích thước của danh sách -mỗi phần tử thường là 1 bản ghi bao gồm 1 hoặc nhiều trường (field) * danh sách con: gồm các phần tử liên tiếp từ a1 đến aj của danh sách -nếu i =1 gọi là phần tử đầu (prefix) -nếu j=n gọi là phần tử cuối (postfix) 34 *dãy con: là 1 danh sách được tạo thành bằng cách loại 1 số phần tử từ danh sách HÀNG ĐỢI *khái niệm: hang đợi là kiểu danh sách mà thao...Put(&q,x); } // In ra man hinh printf("Danh sach cac phan tu la: "); while(!QueueEmpty(q)) { printf("%d ", Get(&q));} getch(); return 0; } • Cài đặt hàng đợi bằng mảng: #include #include #include #define max 100 typedef struct { int data[max]; int head; int tail; } queue; void khoitao(queue &q) . 1: Đề 01: cho mảng 50 pt số nguyên, viết phương trình gồm hàm nhập, sắp xếp, tìm pt theo yêu cầu sau: - Nhập mảng - Sắp xếp theo kiểu chèn tìm các pt âm và in ra vị trí của nó trong mảng  Đánh. 3: cho 1 mảng số nguyên gồm tối đa 50 pt. Viết chương trình trong đó XĐ các hàm có chức năng nhập, sắp xếp, tìm kiếm và in ra kết quả để: - Nhập mảng - Sắp xếp mảng theo thuật toán chèn - Tìm. 3: 1. Cây nhị phân tìm kiếm Đề 01: cho dãy số nguyên: 10 3 11 4 22 7 A, vẽ cây nhị phân B, viết chương trình thảo mãn những đk sau: - Tạo cây nhị phân - Tính tổng và in ra số nút >10 - Tính

Ngày đăng: 14/05/2015, 14:38

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w