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 230 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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

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: - 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

Trang 1

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:

- 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");

}

Trang 2

//Sap xep chen

void sxchen(int a[],int n)

j ;

}a[j+1]=temp;

}

}

Trang 3

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)

Trang 4

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)

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

Trang 5

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)

Trang 6

Đề 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)

Trang 7

void timptu(matran a,int m,int n,int x)

//tim vitri phan tu co gia tri x

int tongcotchan(matran a,int m,int n)

//tong phan tu o cot chan

int demspt(matran a,int m,int n)

//dem so phan tu chia het cho 3

int sapxepnoibottheohang(matran a,int x,int n)

//sapxep giam dan noi bot hang x

{ int i,j; //hang x -> i=x-1

Trang 8

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++)

for(j=i+1;j<n;j++)if(a[x-1][j]<a[x-1][m]) m=j;

void sxchen(matran a,int x,int n)

//sx chen tang dan theo hang x

Trang 10

if(q->tail==NULL) q->tail=p;//Trong TH hang doi rong

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

{ printf("Nhap phan tu thu %d: ", i+1);

scanf("%d", &x);

Trang 11

void them(queue &q,int x)

{ if(ktday(q)) cout<<"Hang doi day! \n";

void bot(queue &q)

{ if(ktrong(q)) cout<<"Hang doi rong! \n";

else

Trang 12

{ if(q.head==q.tail)

khoitao(q);

elseq.head=q.head+1;

Trang 13

Đề 02: ngăn xếp: tạo một ngăn xếp với các công việc: khởi tạo, kiểm tra rỗng,

Trang 14

if(StackEmpty(*s)) printf("Ngan xep rong");

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

{ printf("Nhap phan tu thu %d: ", i);

Trang 15

void them(stack &s,int x)

{ if(ktday(s)) cout<<"Stack day";

Trang 16

- Tạo 1 danh sách liên kết đơn gồm các pt là số nguyên

- Chèn 1 pt có giá trị = k nhập từ bàn phím vào sau pt có giá trị lớn nhất trong danh sách

- In ra màn hình danh sách sau khi tạo và chèn

//Dslk don gom cac pt la so nguyen Chen vao sau pt co gia tri lon nhat trong danh sach

In ra danh sach sau khi tao va chen

typedef struct node *listnode;

void Insert_Begin(listnode *p, int x)

Trang 18

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

{ printf("Nhap phan tu thu %d: ",i+1);

Trang 19

printf("Danh sach cac phan tu la: ");

Trang 20

Câu 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

struct node* left;

struct node* right;

};

typedef struct node* bistree;

Trang 21

if(NewNode==NULL) return NewNode;//x chua nhap vao

if(root==NULL) root=NewNode; //cay rong thi nut goc bang NewNode

Trang 22

return NewNode;

}

//Duyet cay thu tu truoc

void NLR(bistree root)

//Duyệt cây thứ tự giữa

void LNR(bistree root)

//Duyệt cây thứ tự sau

void LRN(bistree root)

Trang 23

//Tinh tong so nut > 10

int bistree_tong10(bistree root)

//Tinh tong gia tri cac phan tu

int bistree_tong(bistree root)

Trang 24

}

return 0;

}

//Tim va in ra gia tri cac phan tu lon hon x

//Dem phan tu lon hon x

int demptx(bistree root, int x)

//In ra phan tu lon hon x

void timptx(bistree root, int x)

Trang 25

printf("Nhap so nut cua cay: ");

scanf("%d", &n);

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

{ printf("Nhap nut thu %d: ",i+1);

printf("\nSo nut >10 cua cay: %d", bistree_tong10(root));

printf("\nCac phan tu co gia 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");

Trang 26

Đề

- 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 chiêu cao của cây

//Cay nhi phan Tinh so nut, so nut la Tinh chieu cao cua cay

struct node* left;

struct node* right;

Trang 27

}

return root;

}

//Them 1 nut ben trai

bistree addleft(bistree &root, int x)

//Them 1 nut ben phai

bistree addright(bistree &root, int x)

Trang 28

//Tinh chieu cao cua cay

int bistree_high(bistree root)

//Tinh so nut cua cay

int bistree_nut(bistree root)

Trang 29

if(root->left==NULL && root->right==NULL)

//So nhanh cua cay bang so nut - so nut la

//Duyet cay thu tu truoc

void NLR(bistree root)

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

{ printf("Nhap nut thu %d: ",i+1);

Trang 30

printf("\nChieu cao cua cay la: %d", bistree_high(root));

printf("\nSo nut cua cay la: %d",bistree_nut(root));

printf("\nSo nut la cua cay la: %d",bistree_nutla(root));printf("\nSo nhanh cua cay la: %d",bistree_nut(root)-bistree_nutla(root));

if(T->item>x) return themnode(T->left,x);

else return themnode(T->right,x);

Trang 31

if(T->item>x) return xoa_node(T->left,x);

if(T->item<x) return xoa_node(T->right,x);

{ if(T->left==NULL && T->right==NULL) return 1;

if(chieucao(T->left)>chieucao(T->right)) return chieucao(T->left)+1;

else return chieucao(T->right)+1;

}

}

Trang 32

//Tìm kiếm

int timkiem(tree &T,int x)

{ if(T!=NULL)

{ if(T->item==x) return 1; //tim thanh cong

else if(T->item <x) return timkiem(T->right,x);//tim ben trai

else if(T->item >x) return timkiem(T->left,x); //tim ben phai

cout<<"So nut cua cay: "<<demnut(T)<<"\n";

cout<<"So la cua cay: "<<demla(T)<<"\n";

cout<<"chieu cao cua cay: "<<chieucao(T)<<"\n";

cout<<"Nhap nut can xoa: ";

cin>>x;

if(xoa_node(T,x)) cout<<"Xoa thanh cong! \n";

else cout<<"Xoa khong thanh cong !\n";

Trang 33

cout<<"Duyet cay theo thu tu truoc: \n";

Trang 34

*kiểu dữ liệu: 1 chiều, nhiều chiều

*cấu 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 các phần tử

-hoặc là danh sách rỗng hoặc có dạng( 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)

Trang 35

*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 tác thêm phần tử được thực hiện ở

1 đầu danh sách con fthao tác lấy phần tử ra đươc thực hiện ở đầu kia của danh sách

*nguyên tắc hoạt động: hoạt động theo nguyên tắc FIFO “vào trước – ra trước”

*ví dụ: xếp hang đợi thanh toán ở siêu thị, soát vé ở rạp chiếu phim

NGĂN XẾP

*khái niệm: ngăn xếp à 1 kiểu danh sách mà thao tác thêm và bớt phần tử được

thực hiện chỉ một đầu danh sách gọi là đỉnh

*nguyên tắc hoạt động: theo nguyên tắc LIFO “vào trước – ra sau”

*ví dụ ngăn xếp tủ quần áo, chồng sách, hộp chứa đạn súng trường

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

🧩 Sản phẩm bạn có thể quan tâm

w