Tiểu luận cấu trúc dữ liệu và giải thuật Đề tài: Nghiên cứu và cài đặt chương trình thực hiện 6 giải thuật sắp xếp (Select_sort, Insert_sort, Bubble_sort, Merge_sort, Quick_sort Heap_sort) để sắp xếp dãy khóa theo chiều giảm dần

35 2.5K 15
Tiểu luận cấu trúc dữ liệu và giải thuật Đề tài: Nghiên cứu và cài đặt chương trình thực hiện 6 giải thuật sắp xếp (Select_sort, Insert_sort, Bubble_sort, Merge_sort, Quick_sort  Heap_sort) để sắp xếp dãy khóa theo chiều giảm dầ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

TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN VIỆN CÔNG NGHỆ THÔNG TIN KINH TẾ -*** - TIỂU LUẬN MÔN HỌC CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Đề tài: Nghiên cứu cài đặt chương trình thực giải thuật xếp (Select_sort, Insert_sort, Bubble_sort, Merge_sort, Quick_sort & Heap_sort) để xếp dãy khóa theo chiều giảm dần Giảng viên hướng dẫn : ThS Lưu Minh Tuấn Lớp tín : Cấu trúc liệu giải thuật (215)_2 Nhóm thực : Nhóm HÀ NỘI, THÁNG 5/2016 DANH SÁCH CÁC THÀNH VIÊN TRONG NHÓM STT Họ tên Mã Sinh Viên Lê Duy Bách 11140444 Trần Thanh Sơn 11143814 Cấu trúc liệu giải thuật Lê Bùi Tuấn Nghĩa 11143027 Nguyễn Tiến Công 11140588 Nguyễn Văn Toản 11146220 Cấu trúc liệu giải thuật LỜI NÓI ĐẦU Chương : Giới thiệu phát biểu đề tài I.Nêu vấn đề II.Phạm vi nghiên cứu đề tài III.Mục tiêu IV.Phương pháp nghiên cứu Chương 2: Trình bày nội dung đề tài nghiên cứu I.Lý thuyết giải thuật xếp 1.Khái niệm: 2.Một số thuật toán xếp: 2.1 Sắp xếp chọn: .7 2.2 Sắp xếp bọt: 2.3Sắp xếp trộn 10 2.4 Sắp xếp nhanh: 13 2.5Sắp xếp vun đống: 15 2.6Sắp xếp chèn: 17 II.Cài đặt thử nghiệm chương trình 18 Sắp xếp lựa chọn(select_sort) 18 1.1 Chương trình 18 1.2 Chạy thử nghiệm .19 1.3 Đánh giá giải thuật select_sort 20 Sắp xếp kiểu “nổi bọt” (bubble_sort) .20 2.1 Chương trình: .20 2.2 Chạy thử nghiệm .21 2.3 Đánh giá giải thuật bubble_sort 22 Sắp xếp kiểu hòa nhập(Merge_sort) .22 3.1 Chương trình : 22 3.2 Chạy chương trình: .24 3.3 Đánh giá thuật toán merge_sort 25 Sắp xếp nhanh(Quick_sort) .25 4.1 Chương trình 25 4.2 Chạy thử nghiệm: 26 4.3 Đánh giá giải thuật quick_sort 27 Sắp xếp vun đống (Heap_sort) .27 5.1 Chương trình 27 5.2Chạy chương trình: .28 5.3 Đánh giá giải thuật heap_sort 30 Sắp xếp kiểu thêm dần(Insert_sort) 30 6.2 Chạy chương trình : 31 6.3 Đánh giá giải thuật insert_sort 31 Chương : Đánh giá kết nghiên cứu kết luận 33 I.Đánh giá kết nghiên cứu 33 II.Kết luận .33 TÀI LIỆU THAM KHẢO 35 Cấu trúc liệu giải thuật LỜI NÓI ĐẦU Trong kỉ nguyên Công Nghệ Thông Tin, cấu trúc liệu tảng tổ chức Cấu trúc liệu biểu diễn nhiều khía cạnh Cấu trúc liệu Giải thuật môn học sở chương trình đào tạo trang bị cho sinh viên kiến thức cấu trúc , liệu thiết kế cài đặt phần mềm Trong bước giải toán máy tính , công đoạn lập trình có vai trò quan trọng Việc ứng dụng tin học ngày phát triển , yêu cầu thực tiễn ngày đa dạng Điều đòi hỏi phải thiết kế giải thuật giải cách hiệu vấn đề đặt Sắp xếp (Sort) trình biến đổi danh sách đối tượng thành đối tượng thỏa mãn thứ tự xác định Sắp xếp đóng vai trò quan trọng việc tìm kiếm liệu Chẳng hạn, thử hình dung xem từ điển từ không xếp theo thứ tự xác định mà người ta thường làm khó khăn việc ta tra cứu từ Trong lĩnh vực kinh tế , việc xếp lại quan trọng Hiện có nhiều giải thuật tìm kiếm xếp xây dựng, mức độ hiệu giải thuật phụ thuộc vào tính chất cấu trúc liệu cụ thể mà tá động đến mà ta lựa chọn phương pháp xếp cho phù hợp Trong khoa học máy tính toán học, thuật toán xếp thuật toán xếp phần tử danh sách (hoặc mảng theo thứ tự tăng dần giảm dần) Người ta thường xét trường hợp phần tử cần xếp số Hầu hết toán có nhiều thuật toán khác để giải chúng Với bùng nổ Công Nghệ Thông Tin xuất nhiều ngôn ngữ lập trình : Foxpro, Pascal, C/C++, C#, Oracle Trong ngôn ngữ lập trình cấp cao Pascal ngôn ngữ có định kiểu mạnh mẽ, gần gũi với ngôn ngữ tự nhiên nhiều người biết đến Đó lí mà nhóm chúng em lựa chọn ngôn ngữ để sử dụng cho toán xếp Để giải toán xếp , ta có nhiều cách : xếp theo kiểu lựa chọn (Simple selection sort), xếp kiểu vun đống (Heap sort), xếp bọt (Bubble sort) , Thông qua ngôn ngữ lập trình Pascal nhóm chúng em đưa thuật toán xếp : Select_sort, Insert_sort, Bubble_sort, Merge_sort, Quick_sort, , Heap_sort Cấu trúc liệu giải thuật Chương : Giới thiệu phát biểu đề tài I Nêu vấn đề Quá trình xếp trình bố trí lại phần tử tập đối tượng điển dãy số , dãy chữ theo thứ tự từ điển v.v., nhằm xếp theo thứ tự định theo thứ tự tăng dân (hoặc giảm dần) dãy số, thứ tự từ điển dãy chữ v.v., Bài toán xếp thường xuất thường xuyên ứng dụng tin học ngôn ngữ lập trình Pascal , với yêu cầu , mục đích khác xếp liệu lưu trữ máy tính theo cách bước khác Nói chung, liệu xuất nhiều dạng khác lưu trữ khối lượng đáng kể, nên việc xây dựng giải thuật xếp cho phép tìm kiếm nhanh có ý nghĩa lớn Từ vấn đề nêu giúp cho chúng em hiểu rõ mục đích để tài : Để xếp dãy số theo trật tự, thứ tự tăng dần (hoặc giảm dần) tùy theo cào yêu cầu người muốn xếp, xếp theo thứ tự để giúp cho việc tìm kiếm dễ dàng hơn, qua giúp chúng em hiểu rõ ưu nhược điểm phương pháp xếp để so sánh tốc độ xếp , từ vận dụng phương pháp việc xếp theo yêu cầu toán đặt cách hiệu mục đích mà nhóm em chọn đề tài giải thuật xếp để nghiên cứu II Phạm vi nghiên cứu đề tài Tìm hiểu vận dung lí thuyết phương pháp xếp : phương pháp chọn trực tiếp (Select_sort), chèn trực tiếp (Insert_sort), xếp bọt (Bubble_sort), xếp trộn (Merge_sort), xếp kiểu vun đống (Heap_sort), xếp nhanh (Quick_sort) , để cài đặt chương trình, cho phép xếp dãy số cho tùy ý thành dãy số có thứ tự theo thuật toán xếp nêu III    IV       Mục tiêu Mô tả trình thực tất phương pháp xếp Phân tích , đánh giá độ phức tạp giải thuật Chạy thành công chương trình cài đặt Phương pháp nghiên cứu Nêu ý tưởng thuật toán Tìm hiểu giải thuật Vẽ sơ đồ khối Mô thuật toán Phân tích , đánh giá độ phức tạp thuật toán Chạy file cài đặt Cấu trúc liệu giải thuật Chương 2: Trình bày nội dung đề tài nghiên cứu Cấu trúc liệu giải thuật I Lý thuyết giải thuật xếp Khái niệm: Trong khoa học máy tính toán học, thuật toán xếp thuật toán xếp phần tử danh sách (hoặc mảng) theo thứ tự (tăng giảm) Người ta thường xét trường hợp phần tử cần xếp số Bài toán xếp nhiều nhà khoa học quan tâm Một số thuật toán xếp: 2.1 Sắp xếp chọn: 2.1.1 Định nghĩa: Sắp xếp chọn (select sort) phương pháp xếp cách chọn phần tử lớn xếp vào vị trí thứ nhất, tương tự với phần tử lớn thứ hai, thứ ba, 2.1.2 Giải thuật: a Ý tưởng: Chọn phần tử lớn n phần tử ban đầu, đưa phần tử vị trí dãy hành Sau không quan tâm đến nữa, xem dãy hành n-1 phần tử dãy ban đầu, vị trí thứ Lặp lại trình cho dãy hành đến dãy hành phần tử Dãy ban đầu có n phần tử, tóm tắt ý tưởng thuật toán thực n-1 lượt việc đưa phần tử lớn dãy hành vị trí đầu dãy b Giải thuật: Cấu trúc liệu giải thuật Procedure SELECT_SORT(k,n); {Giải thuật thực xếp dãy khóa k gồm n phần tử theo chiều giảm} For i:=1 to n-1 Begin m:= i; { khởi tạo số khóa lớn dãy lại} For i:= i + to n {tìm khóa lớn dãy lại} if k[m] < k[j] then m:= j; if m i then {đổi chỗ} begin x:= k[i]; {khóa đầu dãy} k[i] := k[m]; k[m]:= x; end; end; Return; c Đánh giá: o Thuật toán phải đổi chỗ phần tử số thuật toán xếp(n lần hoán vị) có độ phức tạp so sánh O(n 2) (n2/2 phép so sánh) o Thuật toán tốn thời gian gần mảng xếp mảng chưa xếp 2.2 Sắp xếp bọt: 2.2.1 Định nghĩa: Sắp xếp bọt (bubble sort) phương pháp xếp đơn giản, dễ hiểu thường dạy khoa học máy tính Giải thuật đầu tập liệu Nó so sánh hai phần tử đầu, phần tử đứng trước nhỏ phần tử đứng sau đổi chỗ chúng cho Tiếp tục làm với cặp phần tử cuối tập hợp liệu Sau quay lại với hai phần tử đầu không cần phải đổi chỗ 2.2.2 Các phương pháp: a Sắp xếp từ xuống: Giả sử dãy cần xếp có n phần tử Khi tiến hành từ xuống, ta so sánh hai phần tử đầu, phần tử đứng trước nhỏ phần tử đứng sau đổi chỗ chúng cho Tiếp tục làm với cặp phần tử thứ hai thứ ba tiếp tục cuối tập hợp liệu, nghĩa so sánh (và đổi chỗ cần) phần tử Cấu trúc liệu giải thuật thứ n-1 với phần tử thứ n Sau bước phần tử cuối phần tử nhỏ dãy Sau đó, quay lại so sánh (và đổi chố cần) hai phần tử đầu gặp phần tử thứ n-2 Ghi chú: Nếu lần duyệt, đổi chỗ cặp phần tử danh sách xếp xong b Sắp xếp từ lên: Sắp xếp từ lên so sánh (và đổi chỗ cần) việc so sánh cặp phần tử thứ n-1 n Tiếp theo so sánh cặp phần tử thứ n-2 n-1, so sánh đổi chỗ cặp phần tử thứ thứ hai Sau bước phần tử lớn lên vị trí (nó giống hình ảnh "bọt" khí nhẹ lên trên) Tiếp theo tiến hành với phần tử từ thứ đến thứ n c Giải thuật: Procedure BUBBLE_SORT(k,n); {Giải thuật thực xếp dãy khóa k gồm n phần tử theo chiều giảm} For i:=1 to n-1 For j:= n downto i + If k[j] > k[j - 1] then Begin x:= k[j]; k[j]:= k[j - 1]; k[j - 1]:= x; end; Return; d Đánh giá: Với i = 1,2, ,n-1 ta cần i phép so sánh Do số nhiều lần so sánh đổi chỗ giải thuật Do độ phức tạp giải thuật cỡ O( Cấu trúc liệu giải thuật ) 2.3 Sắp xếp trộn 2.3.1 Định nghĩa: Trong khoa học máy tính, xếp trộn (merge sort) thuật toán xếp để xếp danh sách (hoặc cấu trúc liệu truy cập tuần tự, v.d luồng tập tin) theo trật tự Nó xếp vào thể loại xếp so sánh Thuật toán ví dụ tương đối điển hình lối thuật toán chia để trị John von Neumann đưa lần đầu năm 1945 Một thuật toán chi tiết Goldstine Neumann đưa năm 1948 2.3.2 Các phương pháp: Giả sử có hai danh sách xếp a[1 m] b[1 n] Ta trộn chúng lại thành danh sách c[1 m+n] xếp theo cách sau: • So sánh hai phần tử đứng đầu hai danh sách, lấy phần tử lớn cho vào danh sách Tiếp tục hai danh sách rỗng • Khi hai danh sách rỗng ta lấy phần lại danh sách cho vào cuối danh sách a Trộn chỗ: Giả sử danh sách a[1 n] có danh sách kề a[k1 k2] a[k2 1+k3] Ta áp dụng cách trộn tương tự để trộn hai danh sách vào danh sách tạm T[k1 k3] trả lại giá trị danh sách tạm T danh sách A Làm gọi trộn chỗ b Trộn từ lên: Nếu danh sách gồm hai phần tử, nửa gồm phần tử đương nhiên Do việc trộn chố hai nửa danh sách cho danh sách phân tử Xuất phát từ đầu danh sách a ta trộn a[1] với a[2], a[3] với a[4], Khi danh sách gồm hai phần tử a Tiếp tục trộn danh sách gồm phần tử thành danh sách phần tử Mỗi lần trộn số danh sách cần trộn giảm nửa Quá trình dừng lại số danh sách c Sắp xếp trộn đệ quy: Một cách gọi đệ quy xếp trộn thường hướng dẫn giáo trình giải thuật Để xếp trộn đoạn a[k1 k2] danh sách a[1 n] ta chia đoạn thành phần a[k1 k3] a[k3 1+k2], k3 = tiến hành xếp với phần trộn chúng lại Lời gọi thủ tục xếp trộn với a[1 n] cho kết toàn danh sách a[1 n] d Trộn đường tự nhiên: Như phần đánh giá giải thuật, nhược điểm lớn thuật toán Trộn trực tiếp không tận dụng thông tin đặc tính Cấu trúc liệu giải thuật 10 for i:= to n - for j:= n downto i + if k[j] > k[j - 1] then begin x:= k[j]; k[j]:= k[j - 1]; k[j - 1]:= x; end; end; procedure xuat; begin assign(f,fo); rewrite(f); for i:= to n write(f,k[i],' '); close(f); end; BEGIN doc; xuli; xuat; END 2.2 Chạy thử nghiệm Cho dãy khóa: 11,5,30,9,38,20,25,13,35 Sắp xếp từ xuống: I Lượt 38 11 30 35 20 25 13 38 35 11 30 25 20 13 38 35 30 11 25 20 13 38 35 30 25 11 20 13 38 35 30 25 20 11 13 38 35 30 25 20 13 11 38 35 30 25 20 13 11 ki 11 30 38 20 25 13 35 Cấu trúc liệu giải thuật 21 2.3 Đánh giá giải thuật bubble_sort Cùng dãy khóa với giải thuật select_sort bubble_sort Nếu ta hình dung dãy khóa thẳng đứng khóa lớn dần lên đầu dãy giống hình ảnh “nổi bọt” siêu nước sôi Ta thu dãy xếp 38,35,30,25,20,13,11,9,5 sau lần lặp Sắp xếp kiểu hòa nhập(Merge_sort) 3.1 Chương trình : program Merge_sort; const fi = 'sapxep.inp'; fo = 'sapxep.out'; type m = array[1 100] of longint; var f: text; n: integer; a: m; procedure doc; var i: integer; begin assign(f,fi); reset(f); readln(f,n); for i:= to n read(f,a[i]); close(f); end; procedure Merge(k1: integer; k2: integer; k3:integer); var i, j, k, n: integer; b: m; begin i:= k1; j:= k2+1; k:= 1; n:= k3-k1+1; Cấu trúc liệu giải thuật 22 while ((i k[j])) begin k[j + 1]:= k[j]; j:= j - 1; Cấu trúc liệu giải thuật 30 end; k[j + 1]:= x; end; end; procedure xuat; begin assign(f,fo); rewrite(f); for i:= to n write(f,k[i],' '); close(f); end; BEGIN doc; xuli; xuat; END 6.2 Chạy chương trình : Lượt ki 11 30 38 20 25 13 35 11 - 11 - 30 11 - 30 11 - 38 30 11 - 38 30 20 11 - 38 30 25 20 11 - 38 30 25 20 13 11 - 38 35 30 25 20 13 11 i 6.3 Đánh giá giải thuật insert_sort Giải thuật dựa ý tưởng người chơi Tiến hành xếp thêm dần cách chèn khóa vào dãy xếp Quá trình lặp lại khóa Kn(n=9) chèn vào vị trí giải thuật kết thúc Kết ta thu dãy xếp sau lần lặp Cấu trúc liệu giải thuật 31 Cấu trúc liệu giải thuật 32 Chương : Đánh giá kết nghiên cứu kết luận I Đánh giá kết nghiên cứu Qua tiểu luận nhóm chúng em tìm hiểu nghiên cứu cài đặt phương pháp xếp : phương pháp chọn trực tiếp (Select_sort), phương pháp chèn trực tiếp (Insert_sort), phương pháp xếp bọt (Bubble_sort), phương pháp xếp trộn (Merge_sort), phương pháp xếp kiểu vun đống (Heap_sort), phương pháp xếp nhanh (Quick_sort); thực việc xếp dãy số cho ban đầu chưa có thứ tự thành dãy có số thứ tự xếp phương pháp  Về mặt ưu điểm kết đạt : - Biết ưu, nhược điểm độ phức tạp phương pháp - Mô tả trình thực phương pháp xếp - Giao diện chương trình dễ dàn sử dụng - Sắp xếp dãy số theo cách cho kết  Về mặt khuyết điểm , hạn chế - Chương trình đơn giản - Chưa hiểu cách sâu sắc số thuật toán - Chưa có lời thích rõ ràng để giải thích cách đặt biến cách hoạt động chương trình  Bài học kinh nghiệm cần rút - Cần phải nghiên cứu tìm hiểu nhiều phương pháp xếp, tìm hiểu ngôn ngữ lập trình để lựa chọn cho minh ngôn ngữ phù hợp để lập trình tốt - Đặc biệt cần phải nghiên cứu thật kĩ tìm hiểu rõ ngôn ngữ mà chọn để cài đặt tiểu luận II Kết luận Qua giải thuật nêu ta thấy rõ : mục đích mà có nhiều phương pháp kĩ thuật giải khác Cấu trúc liệu lựa chọn để hình dung đối tượng xếp ảnh hưởng sát tới giải thuật xử lí Các phương pháp xếp đơn giản thể ba kĩ thuật sở xếp (dựa vào phép so sánh giá trị khóa) cấp độ lớn thời gian thực chung O(n 2) nên sử dụng chúng n nhỏ Các giải thuật cải tiến : Quick_sort, Heap_sort đạt hiệu cao O(log2n) thường sử dụng n lớn Cấu trúc liệu giải thuật 33 Merge_sort không hiệu lực thời gian thực không gian đòi hỏi không thích nghi với xếp Nếu dãy số ban đầu có khuynh hướng “hầu xếp sẵn” Quick_sort lại không nên dùng có khuyng hướng nhiều ngược với thứ tự xếp Heap_sort lại tỏ thuận lợi Việc khẳng định kĩ thuật nói luôn tốt kĩ thuật khác điều không nên Việc lựa chọn phương pháp xếp thích hợp tùy thuộc vào yêu cầu , điều kiện cụ thể Trong trình nghiên cứu đề tài thực nhóm có thêm nhiều kiến thức rút nhiều kinh nghiệm hữu ích Tất thành viên nhóm cố gắng để hoàn thành xong tiểu luận hẳn tránh khỏi nhiều sai sót mong thầy hướng dẫn góp ý thêm để nhóm em trở nên hoàn thiện Em xin chân thành cảm ơn Cấu trúc liệu giải thuật 34 TÀI LIỆU THAM KHẢO [1] Lưu Minh Tuấn Bài giảng cấu trúc liệu & GT Bộ môn CNTT-ĐHKTQD năm 2004 [2] Đỗ Xuân Lôi Cấu trúc liệu giải thuật ĐHBKHN, NXB Thống kê, năm 1999 [3] Leendert Ammeraal Programs and Data Structures and Algorithms A.Wesly, 1983 [4] A.V.Aho, JE.Hoperoft, J.D.Ulmann Data Structures and Algorithms A.Wesley, 1983 [5] Website: https://vi.wikipedia.org [6] Website: 123doc.vn Cấu trúc liệu giải thuật 35 [...]... 4 5 6 7 8 9 6. 3 Đánh giá giải thuật insert_sort Giải thuật dựa trên ý tưởng của người chơi bài Tiến hành sắp xếp thêm dần bằng cách chèn khóa vào dãy đã sắp xếp Quá trình lặp lại cho đến khi khóa Kn(n=9) được chèn vào đúng vị trí và giải thuật kết thúc Kết quả ta thu được dãy đã sắp xếp sau 9 lần lặp Cấu trúc dữ liệu và giải thuật 31 Cấu trúc dữ liệu và giải thuật 32 Chương 3 : Đánh giá kết quả nghiên. .. một ngăn xếp, rồi phân chia tiếp danh sách đứng trước d Giải thuật: Cấu trúc dữ liệu và giải thuật 13 Procedure QUICK_SORT( k,cs_duoi,cs_tren); {Giải thuật thực hiện sắp xếp dãy khóa k gồm n phần tử theo chiều giảm Trong giải thuật, sử dụng một bản ghi giả có khóa tương ứng là chỉ số dưới và chỉ số trên (ban đầu cs_duoi = 1, cs_tren = n) Ta sử dụng 2 biến chỉ số i và j để chọn khóa trong quá trình xử... phải nghiên cứu thật kĩ và tìm hiểu rõ hơn nữa về ngôn ngữ mà mình chọn để cài đặt trong bài tiểu luận này II Kết luận Qua 6 giải thuật nêu trên ta đã thấy rõ : cùng một mục đích như nhau mà có rất nhiều phương pháp và kĩ thuật giải quyết khác nhau Cấu trúc dữ liệu được lựa chọn để hình dung đối tượng của sắp xếp đã ảnh hưởng rất sát tới giải thuật xử lí Các phương pháp sắp xếp đơn giản đã thể hiện. .. nghiên cứu và kết luận I Đánh giá kết quả nghiên cứu Qua bài tiểu luận của nhóm chúng em đã tìm hiểu nghiên cứu và cài đặt được 6 phương pháp sắp xếp đó là : phương pháp chọn trực tiếp (Select_sort), phương pháp chèn trực tiếp (Insert_sort), phương pháp sắp xếp nổi bọt (Bubble_sort), phương pháp sắp xếp trộn (Merge_sort), phương pháp sắp xếp kiểu vun đống (Heap_sort), phương pháp sắp xếp nhanh (Quick_sort) ;... (13) 11 (5 9) 5 38 35 30 25 20 13 11 (5 9) 6 38 35 30 25 20 13 11 (9) 5 7 38 35 30 25 20 13 11 9 5 Lượt Cấu trúc dữ liệu và giải thuật 26 4.3 Đánh giá giải thuật quick_sort Chọn ngẫu nhiên một khóa đầu dãy làm khóa chốt (chốt:=K(1) hay chốt:=11) Mọi khóa lớn hơn khóa chốt phải được sắp xếp vào vị trí trước chốt Mọi khóa nhỏ hơn khóa chốt phải được sắp xếp vào vị trí sau chốt Ta thu được 2 phân đoạn... khóa cha với khóa con nhỏ nhất} If cha < k[j] then Cấu trúc dữ liệu và giải thuật 16 {Nếu khóa cha nhỏ hơn thì đưa khóa cha vào đúng vị trí của nó và thoát} begin k[j div 2]:= cha; return; end; {Chuyển khóa k lên trên và đi xuống cây con trái của cây có gốc là j} k[j div 2] := k[j]; j:=2*j; end; {Đưa khóa k vào vị trí} k[j div 2]:= cha; Return; Với giải thuật VUN_DONG đã được cài đặt ở trên, giải thuật. .. Begin {sắp xếp} x:= k[1]; k[1]:= k[i+1]; k[i + 1]:= x; {Vun lại thành đống đối với các cây gồm các nút sau khi đã loại khóa trội ra ngoài} Call VUN_DONG(1,i); end; Return; c Độ phức tạp: O (n log2) 2 .6 Sắp xếp chèn: 2 .6. 1 Định nghĩa: Sắp xếp chèn (insertion sort) là một thuật toán sắp xếp bắt chước cách Cấu trúc dữ liệu và giải thuật 17 sắp xếp quân bài của những người chơi bài Muốn sắp một bộ bài theo. .. Cho một dãy khóa 11,5,28,9,38,20,25,13,35 Hãy sắp xếp dãy khóa theo chiều giảm dần i Lượt 1 2 3 4 Ki Cấu trúc dữ liệu và giải thuật 19 5 6 1 2 3 4 5 6 7 8 9 11 5 30 9 38 20 25 13 35 38 5 30 9 11 20 25 13 35 38 35 30 9 11 20 25 13 5 38 35 30 25 11 20 9 13 5 38 35 30 25 20 11 9 13 5 38 35 30 25 20 13 9 11 5 38 35 30 25 20 13 11 9 5 1.3 Đánh giá giải thuật select_sort Ở đây ta chọn ra khóa đầu dãy K(i)=... nhanh (Quick_sort) ; thực hiện được việc sắp xếp dãy số đã cho ban đầu chưa có thứ tự thành một dãy có số thứ tự sắp xếp bằng 6 phương pháp trên  Về mặt ưu điểm của kết quả đạt được : - Biết được ưu, nhược điểm cũng như độ phức tạp của từng phương pháp trên - Mô tả được quá trình thực hiện 6 phương pháp sắp xếp trên - Giao diện chương trình dễ dàn sử dụng - Sắp xếp dãy số theo 6 cách đều cho kết quả đúng... không gian bộ nhớ để lưu các dãy phụ b, c Hạn chế này khó chấp nhận trong thực tế vì các dãy cần sắp xếp thường có kích thước lớn Vì vậy thuật toán trộn thường được dùng để sắp xếp các cấu trúc dữ liệu khác phù hợp hơn như danh sách liên kết hoặc file 2.4 Sắp xếp nhanh: 2.4.1 Định nghĩa: Sắp xếp nhanh (Quicksort), còn được gọi là sắp xếp kiểu phân chia (part sort) là một thuật toán sắp xếp phát triển

Ngày đăng: 05/05/2016, 00:34

Từ khóa liên quan

Mục lục

  • 2.1.1 Định nghĩa:

  • 2.1.2 Giải thuật:

  • 2.2.1 Định nghĩa:

  • 2.2.2 Các phương pháp:

  • 2.3.1 Định nghĩa:

  • 2.3.2 Các phương pháp:

  • 2.4.1 Định nghĩa:

  • 2.4.2 Giải thuật:

  • 2.5.1 Định nghĩa:

  • 2.5.2 Giải thuật:

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

Tài liệu liên quan