Xây dựng chương trình cài đặt các thuật toán

36 1.2K 25
Xây dựng chương trình cài đặt các thuật toá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

Tài liệu tham khảo kỹ thuật công nghệ, chuyên ngành tin học Xây dựng chương trình cài đặt các thuật toán

Cấu trúc dữ liệu & giải thuậtGiải thuật sắp xếp dữ liệuLời mở đầu Trong kỷ nguyên Công Nghệ Thông Tin, cấu trúc dữ liệu là nền tảng trong mọi hoạt động của các tổ chức.Cấu trúc dữ liệu được biểu hiện dưới nhiều khía cạnh. Cấu trúc dữ liệu và giải thuật là một môn học cơ sở trong chương trình đào tạo trang bị cho sinh viên những kiến thức cơ bản về cấu trúc, dữ liệu khi thiết kế và cài đặt các phần mềm. Trong các bước giải quyết một bài toán trên máy tính, công đoạn lập trình có vai trò quan trọng nhất. Việc ứng dụng tin học ngày càng phát triển, các yêu cầu của thực tiễn ngày càng đa dạng. Điều đó đòi hỏi phải thiết kế các giải thuật giải quyết một cách hiệu quả nhất vấn đề đặt ra. Sắp xếp (sort) là một quá trình biến đổi một danh sách các đối tượng thành một danh sách thoả mãn một thứ tự xác định nào đó. Sắp xếp đóng một vai trò rất quan trọng trong việc tìm kiếm dữ liệu. Chẳng hạn, chúng ta thử hình dung xem một cuốn từ điển nếu các từ không được sắp xếp thứ tự mà người ta vẫn thường làm sẽ khó khăn thế nào trong việc tra cứu các từ. Trong lĩnh vực kinh tế việc sắp lại càng quan trọng. Với sự bùng nổ của công nghệ thông tin đã xuất hiện nhiều ngôn ngữ lập trình ví dụ như foxpro, pascal,C+,C++, .Trong đó, ngôn ngữ lập trình cấp cao pascal là một ngôn ngữ có định kiểu mạnh mẽ, gần gũi với ngôn ngữ tự nhiên và được nhiều người biết đến. Đó chính là lý do mà nhóm chúng tôi đã lựa chọn ngôn ngữ này để sử dụng cho bài toán sắp xếp.Để giải quyết một bài toán sắp xếp ta có rất nhiều cách như: sắp xếp theo kiểu lựa chọn, sắp xếp theo kiểu đổi chỗ, sắp xếp theo kiểu vun đống, . Thông qua ngôn ngữ lập trình pascal nhóm chúng tôi đã đưa ra một số thuật toán sắp xếp cơ bản. Mong được sự ủng hộ của thầy cô và các bạn.Sắp xếp dữ liệu - giải thuật và ứng dụng 1 Cấu trúc dữ liệu & giải thuậtGiới thiệu và phân tích bài toán. 1)Tên đề tàiXây dựng chương trình cài đặt các thuật toán:- Sắp xếp kiểu lựa chọn- Sắp xếp kiểu đổi chỗ- Sắp xếp kiểu vun đống- Sắp xếp kiểu thêm dần- Sắp xếp kiểu phân đoạn- Sắp xếp kiểu hoà nhập hai đường2) Thời gian thực hiện chương trình- Từ ngày 16/03/2006 - Đến ngày 16/04/20063) Mục đích của đề tàiĐề tài này nhằm các mục đích nghiên cứu các giải thuật sắp xếp, cài đặt chương trình chạy cụ thể cho từng giải thuật, phân tích tính hiệu quả và phạm vi ứng dụng của từng giải thuật. Và như vậy với mỗi bài toán cụ thể, ta có thể ứng dụng giải thuật phù hợp nhất cho bài toán để xửu lý dữ liệu một cách hoàn hảo nhất.Sắp xếp dữ liệu - giải thuật và ứng dụng 2 Cấu trúc dữ liệu & giải thuậtI. Sắp xếp kiểu chèn ( thêm dần ) – insertion sort1. Lý thuyết liên quan .a. Cấu trúc dữ liệu:- Cấu trúc kiểu mảng.b. Giải thuật:* Ý tưởng giải thuật:- Ban đầu coi dãy khoá chỉ có dãy khoá K1 đã được sắp xếp, khi xét them dãy khóa K2, ta phải so sánh K2 với K1 để tìm chỗ thích hợp chèn K2 vào. Dãy K1 và K2 đã được sắp xếp sau đó xét them K3 ta phải so sánh K1 và K2 để tìm chỗ chèn K3 vào cho đến Kn được chèn vào đúng chỗ. Khi đó thuật toán kết thúc* Giải thuật:Procedure Insert_sort (K,n){ Để đảm bảo việc chèn được thực hiện ngay từ khoá đầu tiên ta đưa vào dãy khoá sắp xếp một khoá giả có giá trị nhỏ hơn tất cả các khóa thực sự trong dãy và đứng ở đầu dãyK[0]= -∞ ; x=K[i]X: lưu trữ khoá đang xét ở lượt thứ i}1.( Khởi tạo biến)K[0]:= -∞;2.( Sắp xếp)for i:=2 to n do beginx=K[i]; j= i-1 ( j là số khoá đã được sắp xếp trước khoá k[i])while x < K[j] do K[j +1] := K[j]j:=j -1; end;K[ j+1] :=x;End;Sắp xếp dữ liệu - giải thuật và ứng dụng 3 Cấu trúc dữ liệu & giải thuật3.Return;c. Mô tả hoạt động của giải thuật sắp xếp theo kiểu chèn: Ví dụ 1-1 Sắp xếp mảng gồm 10 mẩu tin đã cho trong ví dụ11. KhoáBướca[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]Ban đầu 5 6 2 2 10 12 9 10 9 3Bước 1 5 6Bước 2 2 5 6Bước 3 2 2 5 6Bước 4 2 2 5 6 10Bước 5 2 2 5 6 10 12Bước 6 2 2 5 6 9 10 12Bước 7 2 2 5 6 9 10 10 12Bước 8 2 2 5 6 9 9 10 10 12Bước 9 2 2 3 5 6 9 9 10 10 12Hình 2-2: Sắp xếp xen bảng mô tả sắp xếp kiểu chèn (Insert_sort)Ví dụ Cho dãy số a: 12 2 8 5 1 6 4 15 Sắp xếp dữ liệu - giải thuật và ứng dụng 4 Cấu trúc dữ liệu & giải thuậtDừng Sắp xếp dữ liệu - giải thuật và ứng dụng 5 Cấu trúc dữ liệu & giải thuậtII. Sắp xếp theo kiểu nổi bọt (bubble_sort)1. Lý thuyết liên quan đến giải thuật sắp xếp:- Sử dụng cấu trúc mảng2. Ý Tưởng giải thuật:Dãy khoá cần sắp xếp được duyệt từ dưới lên,nếu trên đường đi gặp hai khoá kế cận ngược chiều sắp xếp thì đổi chỗ va quá trình lặp lại. Như vậy sau lượt thứ nhất khoá nhỏ nhất được xắp ở vị trí nhỏ nhất, lượt thứ hai được sắp xếp vào vị trí thứ 2 cứ như thế cho đến khi tất cả các khoá được sắp xếp.* Giải thuật:- Nội dung của phương pháp này là bước thứ i(i=1,2,3,… ,n-1) ta lựa chọn phần tử nhỏ nhất trong dãy từ a[1]…a[n] có thứ tự.- Giải thuật như sau:Procedure buble_sort(k,n)1.(Khởi tạo)For i:=1 to n-1 do For j:=n down to i+1 do beginIf k[j]<k[j-1] then beginX:=k[j];k[j]:=k[j-1];k[j-1]:=x;end;end;2.Return* Mô tả hoạt động giải thuật sắp xếp nổi bọtSắp xếp dữ liệu - giải thuật và ứng dụng 6 Cấu trúc dữ liệu & giải thuật Ví dụ 1-2: Sắp xếp mảng gồm 10 mẩu tin đã cho trong ví dụ 1-1. KhoáBướca[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]Ban đầu 5 6 2 2 10 12 9 10 9 3Bước 1 2 5 6 2 3 10 12 9 10 9Bước 2 2 5 6 3 9 10 12 9 10Bước 3 3 5 6 9 9 10 12 10Bước 4 5 6 9 9 10 10 12Bước 5 6 9 9 10 10 12Bước 6 9 9 10 10 12Bước 7 9 10 10 12Bước 8 10 10 12Bước 9 10 12Kết quả 2 2 3 5 6 9 9 10 10 12Bảng sắp xếp nổi bọt• Ví dụ Cho dãy số a: 12 2 8 5 1 6 4 15 Sắp xếp dữ liệu - giải thuật và ứng dụng 7 Cấu trúc dữ liệu & giải thuậtSắp xếp dữ liệu - giải thuật và ứng dụng 8 Cấu trúc dữ liệu & giải thuậtIII. Sắp xếp kiểu lựa chọn( Selection sort).1. Lý thuyết liên quan:* Cấu trúc dữ liệu;- Sử dụng cấu trúc mảng.2. Giải thuật.a. Ý tưởng giải thuật.- Ở lượt thứ I của giải thuật, ta phải lấy ra phần tử đầu tương ứng đầu dãy và sau đó tìm min dãy còn lại Ki, Ki+1,…,Kn. Rồi so sánh min đó với phần tử đầu dãy.Sắp xếp dữ liệu - giải thuật và ứng dụng 9 Cấu trúc dữ liệu & giải thuậtNếu số min nhỏ hơn phần tử đầu dãy thì đổi chỗ. Sau jlựơt thì jkhoá nhỏ hơn sẽ được xếp vào vị trí thứ nhất, thứ hai, thứ jtương ứng. Thực hiện n-1 lần lượt b. Giải thuật.Nội dung của phương pháp này là ở bước thứ I (i= 1,2, ,n-1) ta lựa chọn phần tử nhơ nhất trong dãy a[i] a[n] rồi đổi chỗ phần tử này với phần tử a[i]. Cuối cùng ta sẽ có dãy a[i] a[n] có thứ tự.Procedure Select_sort(k,n)1.Khởi tạo.for i:=1 to n-1 beginm:=I {m: chỉ số của phần tử min}for j:= i+1 to n doif K[j]<K[m] then m:=j;if K[m]<K[i] then beginX:=K[m]K[m]:=K[i];K[i]:=X;End;End; 2.Return.c. Mô tả hoạt động của sắp xếp kiểu lựa chọnHình 2-1: Sắp xếp chọnVí dụ1-3: Sắp xếp mảng gồm 10 mẩu tin có khóa là các số nguyên: 5, 6, 2, 2, 10, 12, 9, 10, 9 và 3 KhoáBướca[1] a[2] a[3] a[4] A[5] a[6] A[7] a[8] a[9] a[10]Sắp xếp dữ liệu - giải thuật và ứng dụng 10 [...]... chuyển các phần tử vào x); Sắp xếp dữ liệu - giải thuật và ứng dụng 21 Cấu trúc dữ liệu & giải thuật 3 call MPASS ( x,n,2*l,k); (thực hiện hoà nhập và chuyển các phần tử vào k) 4 l:=4*l; end; 5.Return; Sắp xếp dữ liệu - giải thuật và ứng dụng 22 Cấu trúc dữ liệu & giải thuật Diễn giải phần chương trình chạy I - Phần chương trình chính: BEGIN Init; Input; Readln; END 1 Phần Input: Là một chương trình. .. Init: Sắp xếp dữ liệu - giải thuật và ứng dụng 23 Cấu trúc dữ liệu & giải thuật Là một chương trình con có tác dụng: Tạo giao diện màn hình và bảng chọn từ bàn phím cho người sử dụng 4 Phần các Proceduce giải thuật: Bao gồm các Procedure dùng để thực hiện các giải thuật sắp xếp khác nhau: 1 Procedure SELECTION SORT Giải thuật sắp xếp kiểu chọn lựa 2 Procedure INSERTION_SORT Giải thuật sắp xếp kiểu chèn... trúc dữ liệu & giải thuật Các tài liệu tham khảo - Giáo trình cấu trúc dữ liệu và giải thuật PGS.TS Hàn Viết Thuận - NXB Thống kê - Cấu trúc dữ liệu và giải thuật GS Đỗ Xuân Lôi – NXB ĐHQG Hà Nội - Các giáo trình điện tử về Cấu trúc dữ liệu và giải thuật khác Sắp xếp dữ liệu - giải thuật và ứng dụng 35 Cấu trúc dữ liệu & giải thuật MỤC LỤC Lời mở đầu Giới thiệu và phân tích bài toán I Sắp xếp kiểu... Giải thuật Heap_sort Khi tìm phần tử nhỏ nhất ở bước i, phương pháp sắp xếp chọn trực tiếp không tận dụng được các thông tin đã có được do các phép so sánh ở bước i-1 Vì lý do trên người ta tìm cách xây dựng một thuật toán sắp xếp có thể khắc phục nhược điểm này Mấu chôt để giải quyết vấn đề vừa nêu là phải tìm ra được một cấu trúc dữ liệu cho phép tích lũy các thông tin về sự so sánh giá trị các phần... Cấu trúc dữ liệu & giải thuật IV Sắp xếp kiểu vun đống ( heap sort) 1 Lý thuyết liên quan a Cấu trúc dữ liệu - Sử dụng cấu trúc kiểu mảng b Giải thuật; * Ý tưởng giải thuật: Thực hiện sắp xếp đối với cây nhị phân hoàn chỉnh Sắp xếp dữ liệu - giải thuật và ứng dụng 12 Cấu trúc dữ liệu & giải thuật Giải thuật gồm hai phần: + Giai đoạn I: Tạo đống ban đầu, gồm 2 bước: - Bước 1: Dựng cây nhị phân ban đầu,... kiểu chèn 3 Procedure BUBBLE_SORT Giải thuật sắp xếp kiểu nổi bọt 4 Procedure QUICK_SORT Giải thuật sắp xếp nhanh 5 Procedure MERGE_SORT 6 Procedure MPASS 7 Procedure STRAIGHT_MERGE_SORT Giải thuật sắp xếp kiểu Trộn lẫn 8 Procedure PUSHDOWN 9 Procedure HEAP_SORT Giải thuật sắp xếp kiểu vun đống Phần mã nguồn (Source Code) của chương trình được viết bằng ngôn ngữ lập trình pascal Yêu cầu cấu hình hệ thống:... số lượng các phần tử (n) + Các phần tử ( dayso[i] ) - Chọn lựa các cách sắp xếp: 1 Selection Sort - Sắp xếp kiểu lựa chọn 2 Insertion Sort - Sắp xếp kiểu chèn 3 Bubble Sort - Sắp xếp kiẻu nổi bọt 4 Quick Sort - Sắp xếp nhanh 5 Merge Sort - Sắp xếp kiểu hoà nhập 6 Heap sort - Sắp xếp kiểu đống - Cách thức sắp xếp: t ă ng dần (Ascending) hoặc giảm dần (Dicending) 2 Phần Output: Là một chương trình con... khoá đã cho, có n phần tử K[1], K[2], ,K[n] Các dãy con trong K đã là các mạch có độ dài bằng l, trừ dãy con cuối cùng có thể có độ dài bé hơn l Q: là số cặp mạch có độ dài l thì Q=  n / 2 * l  ; Gọi S:=2*l*Q thì S là số các phần tử của Q của mạch → R= n-S là số các phần tử còn lại của dãy K Sắp xếp dữ liệu - giải thuật và ứng dụng 20 Cấu trúc dữ liệu & giải thuật Procedure MPass (k,n,l,x); [X: là vecto... nhiều lần nên ta sẽ xây dựng 1 thủ tục để thực hiện vun đống, với cây có gốc là I và có n nút } Procedure Vundong (i,n) {Giải thuật nhăm vun đống đối với cây nhị phân hoàn chỉnh có gốc là I mà 2 cây con có gốc tương ứng 2i, 2i+1, đã là đống 1{khởi tạo} { Khoá cha: là biến lưu trữ nút cha} Khoacha=K[i] jchỉ số của các con Sắp xếp dữ liệu - giải thuật và ứng dụng 13 Cấu trúc dữ liệu & giải thuật Khoacha:=K[i];... liệu - Sử dụng cấu trúc kiểu mảng; b.Giải thuật: * Ý tưởng giải thuật: - Ban đầu chọn khoá ngẫu nhiên làm khoá “ chốt”, sau lượt sắp xếp thì bảng khoá sẽ được chia thành 2 bảng con: Bảng khoá trước chốt: chứa khoá nhỏ hơn chốt Bảng khóa sau khi chốt chứa các khoá lớn hơn khoá chốt Sắp xếp dữ liệu - giải thuật và ứng dụng 16 Cấu trúc dữ liệu & giải thuật Muốn vậy các khoá trong dãy (ki, kj) phải được so . 1 Cấu trúc dữ liệu & giải thuậtGiới thiệu và phân tích bài toán. 1)Tên đề tàiXây dựng chương trình cài đặt các thuật toán: - Sắp xếp kiểu lựa chọn-. hiện chương trình- Từ ngày 16/03/2006 - Đến ngày 16/04/20063) Mục đích của đề tàiĐề tài này nhằm các mục đích nghiên cứu các giải thuật sắp xếp, cài đặt chương

Ngày đăng: 21/11/2012, 10:02

Từ khóa liên quan

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

Tài liệu liên quan