Tổng quan về một số thuật toán tìm kiếm sắp xếp và danh sách liên kết đơn

41 15 0
Tổng quan về một số thuật toán tìm kiếm sắp xếp và danh sách liên kết đơn

Đ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

HỌC VIỆN NGÂN HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ 🙠🙠🙠 BÀI TẬP LỚN MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT ĐỀ TÀI: TỔNG QUAN VỀ MỘT SỐ THUẬT TỐN TÌM KIẾM, SẮP XẾP VÀ DANH SÁCH LIÊN KẾT ĐƠN GV hướng dẫn: Cô Giang Thị Thu Huyền Mã lớp học phần: 201IS07A02 Nhóm SV thực hiện: Nhóm Hà Nội 2021 HỌC VIỆN NGÂN HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ 🙠🙠🙠 BÀI TẬP LỚN MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT ĐỀ TÀI: TỔNG QUAN VỀ MỘT SỐ THUẬT TỐN SẮP XẾP, TÌM KIẾM VÀ DANH SÁCH LIÊN KẾT ĐƠN GV hướng dẫn: Giang Thị Thu Huyền Mã lớp học phần: 201IS07A02 Nhóm SV thực hiện: Nhóm Sinh viên thực Mã SV Tỷ lệ đóng góp Điểm Hà Hữu Lương 23A4040079 … Lê Hồng Vũ 23A4040156 … Ngơ Thị Phương Thảo 23A4040131 … Thái Đức Tuấn 23A4040151 … Đặng Thị Thanh Nhàn 23A4040103 … Hà Nội 2021 Lời cảm ơn Dưới tìm hiểu nhóm s ố thuật tốn tìm kiếm,s ắp x ếp danh sách liên kết đơn, qua nghiên cứu, bọn em hiểu sâu v ề thuật toán, cách ho ạt động, có nhìn tồn vẹn từ việc ch ạy code d ưới ngôn ng ữ khác nhau, t đúc rút số kinh nghiệm, hành trang để áp d ụng vào toán, hỗ trợ cho việc học tập, làm đề án cơng việc sau Qua q trình làm vi ệc tìm hiểu nhóm nhóm cịn thiếu sót, mong có góp ý đ ể t ập c nhóm hồn thiện Nhóm xin chân thành cảm ơn chúc thật nhiều sức khỏe! MỤC LỤC CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI CHƯƠNG 2: BỘ PHẬN HỢP THÀNH A, MỘT SỐ THUẬT TOÁN SẮP XẾP 1, SHELL SORT 2, QUICK SORT 3, MERGE SORT B, MỞ RỘNG THUẬT TỐN TÌM KIẾM, SẮP XẾP BẰNG NGÔN NGỮ PYTHON 1, BINARY SEARCH 2, MODULE BISECT 3, BUBBLE SEARCH 4, QUICK SORT C, DANH SÁCH LIÊN KẾT ĐƠN 1, Khái niệm 2, Ưu, nhược điểm so sánh với mảng 3, Cài đặt danh sách liên kết đơn 3,1 Tạo cấu trúc Node 3,2 Tạo cấu trúc danh sách liên kết đơn 3,3 Tạo Node 4, Thao tác với danh sách liên kết 4,1 Thêm 4,2 Xóa 4,3 Duyệt 4,4 Sắp xếp 4,5 Tìm kiếm 4,6 Kết luận CHƯƠNG 3: ĐÁNH GIÁ CHUNG 3.1, So sánh tốc độ thuật toán 3.2, Tạm kết đánh giá hiệu 3.3, Các nguồn tài liệu tham khảo CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 1.1 Giới thiệu thuật toán xếp Để thuận tiện giảm thiểu thời gian thao tác mà đặc biệt để tìm ki ếm d ữ liệu dễ dàng nhanh chóng, thơng thường trước thao tác li ệu mảng, tập tin có thứ tự Do thao tác xếp li ệu m ột thao tác cần thiết thường gặp trình lưu tr ữ, qu ản lý li ệu Có nhiều cách xếp liệu, nhóm em quan tâm đến thu ật toán xếp dựa phân hoạch , hiệu s ố ưu điểm nh d ễ hi ểu, dễ sử dụng Vì chúng em chọn ba đại diện là: Shell sort, Quick sort Merge sort 1.2 Mở rộng thêm số thuật tốn ngơn ngữ Python Python ngơn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, tạo Guido van Rossum Nó dễ dàng để tìm hiểu lên ngơn ngữ lập trình nhập mơn tốt cho người tiếp xúc với ngôn ngữ lập trình Cú pháp lệnh Python điểm cộng vơ lớn rõ ràng, dễ hiểu cách gõ linh động làm cho nhanh chóng trở thành ngôn ngữ lý tưởng để viết script phát triển ứng dụng nhiều lĩnh vực, hầu hết tảng Vậy nên nhóm em định tìm hiểu thêm cách thức tổ chức thuật toán xếp tìm kiếm python, cụ thể gồm có thuật tốn: Binary search, Bubble sort, Quick sort Ngồi nhóm cịn tìm hiểu module Bisect sẵn có Python : Mô-đun cung cấp hỗ trợ để trì danh sách theo thứ tự xếp mà không cần phải xếp danh sách sau lần chèn Đối với danh sách dài mục với thao tác so sánh tốn kém, tất nhiên cải tiến so với cách tiếp cận phổ biến Trong q trình demo code, nhóm có sử dụng thư viện random để sinh số ngẫu nhiên mảng (hy vọng điểm cộng cho tính sáng tạo tốn) 1.3 Danh sách liên kết đơn Song song với trình làm việc với mảng qua thuật tốn nhóm em có tham vọng tìm hiểu thêm danh sách liên kết đơn với ưu điểm mà mang lại: ● Cung cấp giải pháp để chứa cấu trúc liệu tuyến tính ● Dễ dàng thêm xóa phần tử danh sách mà khơng cần phải cấp phát tổ chức lại trật tự mảng ● Cấp phát nhớ động m ột cách tự động CHƯƠNG 2: BỘ PHẬN HỢP THÀNH A, MỘT SỐ THUẬT TOÁN SẮP XẾP 1, SHELL SORT *Ý tưởng toán: Giả sử ta cần xếp dãy số a[1], a[1] , a[n] gồm n phần tử theo chiều tăng dần -Chia dãy ban đầu thành dãy gồm phần tử cách h vị trí (khoảng cách phần tử dãy con) Dãy ban đầu : a1, a2, , an xem xen kẽ dãy sau : Dãy thứ : a1 ah+1 a2h+1 Dãy thứ hai : a2 ah+2 a2h+2 Dãy thứ h : ah a2h a3h -Tiến hành xếp phần tử dãy theo phương pháp chèn trực tiếp => phần tử dãy đưa vị trí tương đối (chỉ dãy con) -Sau đó, giảm khoảng cách h để tạo thành dãy (tạo điều kiện để so sánh phần tử với nhiều phần tử khác mà trước khơng dãy với nó) Và lại tiếp tục xếp phần tử dãy -Thuật toán dừng khoảng cách phần tử h=1, lúc phần tử dãy so sánh với để xác định trật tự cuối + Giả sử định xếp k bước, khoảng cách chọn phải thỏa điều kiện : hi > hi+1 hk = hi = (hi-1 - 1)/3 hk = 1, k = log3n-1 Ví dụ :127, 40, 13, 4, hi = (hi-1 - 1)/2 hk = 1, k = log2n-1 Ví dụ : 15, 7, 3, h có dạng 3i+1: 364, 121, 40, 13, 4, Dãy fibonaci: 34, 21, 13, 8, 5, 3, 2, h dãy số nguyên tố giảm dần đến 1: 13, 11, 7, 5, 3, *Giải thuật Bước 1: Chọn k khoảng cách: h[1], h[2], , h[k]; i = 1; Bước 2: Phân chia dãy ban đầu thành dãy cách h[i] khoảng cách Sắp xếp dãy phương pháp chèn trực tiếp; Bước 3: i = i+1; Nếu i > k : Dừng Ngược lại : Lặp lại Bước *Hàm cài đặt void ShellSort(int a[],int n) { int h,j,x; for(h=n/2;h>0;h/=2)//Khoang cach h //Thuc hien hoan doi giua ptu co khoang cach h { for(int i=h;i=h && a[j-h]>x;j=j-h) // sap xep day chua x bang pp chen truc tiep { a[j]=a[j-h]; } a[j]=x; } } printf("\nDay so sau sap xep la:"); for(int i=0;i

Ngày đăng: 14/04/2022, 16:59

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan