cài đặt các thuật toán sắp xếp trên mảng một chiều

22 2.5K 4
cài đặt các thuật toán sắp xếp trên mảng một chiều

Đ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

ĐỒ ÁN CƠ SỞ ĐỀ TÀI: Cài đặt các thuật toán sắp xếp trên mảng một chiều LỜI MỞ ĐẦU 3 1. LÝ DO CHọN Đề TÀI 3 2. MụC TIÊU Đề TÀI 4 3. PHạM VI NGHIÊN CứU 4 4. PHƯƠNG PHÁP NGHIÊN CứU 4 CHƯƠNG I : CƠ SỞ LÝ THUYẾT, CÁC CÔNG CỤ LẬP TRÌNH PHỤC VỤ NGHIÊN CỨU 4 1.1 CƠ Sở LÝ THUYếT Về THUậT TOÁN SắP XếP 4 1.1.1 Định nghĩa: 4 1.1.2 Các loại thuật toán 4 1.2 CÔNG Cụ LậP TRINH C 6 1.2.1 Lịch sử hình thành: 6 1.2.2 Các lệnh xử lý 6 CHƯƠNG II : PHÂN TÍCH VÀ THIếT Kế THUậT TOÁN : 8 2.1 THUậT TOÁN SắP XếP CHÈN 8 2.1.1 Mô tả phương pháp 8 2.1.2 Sơ đồ mô tả phương pháp 8 2.1.3 Ví dụ 9 2.1.4 Lưu đồ thuật toán 10 2.1.5 Cài đặt thuật toán trên C 10 2.2 THUậT TOÁN SắP XếP NổI BọT 11 2.2.1 Mô tả phương pháp 11 2.2.2 Ví dụ 11 2.2.3 Lưu đồ thuật toán 12 2.2.4 Thuật toán 13 2.3 THUậT TOÁN SắP XếP LựA CHọN 13 2.3.1 Mô tả phương pháp 13 2.3.2 Ví dụ 14 2.3.3 Lưu đồ thuật toán 16 2.3.4 Thuật toán 17 CHƯƠNG III : CÀI ĐặT CHƯƠNG TRÌNH 18 3.1 Đề BÀI 18 3.2 CHƯƠNG TRÌNH 18 CHƯƠNG IV : PHầN KếT LUậN 20 4.1 CÁC KếT QUả ĐạT ĐƯợC 20 4.2 ƯU VÀ NHƯợC ĐIểM 21 a. Ưu 21 b. Nhược 21 4.3 HƯớNG PHÁT TRIểN 21 LỜI MỞ ĐẦU 1. Lý do chọn đề tài Trong hai thập kỷ qua, mô phỏng thuật toán đã được các nhà sư phạm của ngành công nghệ thông tin sử dụng như một công cụ có tính chất giúp đỡ trong việc dạy các thuật toán đồ thị, các thuật toán sắp xếp, khác nhau bằng máy tính. Nguyên nhân của việc mô phỏng thuật toán được sử dụng như một công cụ trợ giúp cho việc giảng dạy là do nó có thể cung cấp các mô phỏng động bằng đồ họa của một thuật toán và các thay đổi trong cấu trúc dữ liệu của nó trong suốt quá trình thực thi. Như một phần của quá trình học thuật toán, những sinh viên ngành công nghệ thông tin sẽ học về cấu trúc của một trình biên dịch (compiler) trong một ngôn ngữ lập trình cho quá trình đó. Điều này sẽ chỉ ra cho chúng ta từng nhiệm vụ của các giai đoạn khác nhau trong trình biên dịch. Hiện nay, một số hệ thống mô phỏng thuật toán được phát triển sau hai thập kỷ. Hầu hết các thuật toán được đề cập đến trong giai đoạn này đều là các hệ thống phổ biến hơn và tinh vi hơn các hệ thống mà thực tế đang sử dụng. Mô phỏng thuật toán ngày càng trở nên hữu ích và trở thành một giáo cụ trực quan rất quan trọng trong hầu hết các lĩnh vực, nhất là trong môi trường giáo dục. Với các nhà sư phạm của ngành công nghệ thông tin thì mô phỏng thuật toán có tác dụng như một tài liệu hướng dẫn trong việc dạy các thuật toán bằng máy tính. Đặc biệt, nó giúp học sinh và sinh viên hiểu cấu trúc dữ liệu và thuật toán nhanh hơn. Như vậy, mô phỏng thuật toán góp phần to lớn vào việc ứng dụng CNTT trong giảng dạy và góp phần vào sự phát triển nhanh chóng của hệ thống elearning. Thuật toán về sắp xếp rất đa dạng và phong phú. Vì vậy vấn đề “ Mô phỏng thuật toán sắp xếp ” được chọn để nghiên cứu trong đồ án cơ sở này. Đồ án cơ sở “Cài đặt các thuật toán sắp xếp trên mảng một chiều “ được hoàn thành với sự hướng dẫn trực tiếp của Thầy giáo : ThS Trần Bàn Thạch .Qua đây em xin chân thành cảm ơn thầy đã giúp em hoàn thành đồ án cơ sở này. Em cũng chân thành cảm ơn các thầy cô trong khoa đã giúp đỡ em trong suốt thời gian qua cai dat cac thuat toan sap xep tren mang mot chieu

TRƯỜNG ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN CƠ SỞ ĐỀ TÀI: Cài đặt các thuật toán sắp xếp trên mảng một chiều Giảng viên hướng dẫn: Th.S Trần Bàn Thạch Sinh viên thực hiện: Trần Viết Huy Lớp: C16TCD Mã sinh viên : 161131206 Đà Nẵng, tháng 04/2011 LỜI MỞ ĐẦU . 3 1.LÝ DO CHỌN ĐỀ TÀI 3 2.MỤC TIÊU ĐỀ TÀI .4 3.PHẠM VI NGHIÊN CỨU .4 4.PHƯƠNG PHÁP NGHIÊN CỨU .4 CHƯƠNG I : CƠ SỞ LÝ THUYẾT, CÁC CÔNG CỤ LẬP TRÌNH PHỤC VỤ NGHIÊN CỨU 4 1.1CƠ SỞ LÝ THUYẾT VỀ THUẬT TOÁN SẮP XẾP .4 1.1.1Định nghĩa: 4 1.1.2Các loại thuật toán 4 1.2CÔNG CỤ LẬP TRINH C 6 1.2.1Lịch sử hình thành: .6 1.2.2Các lệnh xử lý .6 CHƯƠNG II : PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN : .8 2.1THUẬT TOÁN SẮP XẾP CHÈN .8 2.1.1Mô tả phương pháp .8 2.1.2Sơ đồ mô tả phương pháp .8 2.1.3Ví dụ .9 2.1.4Lưu đồ thuật toán 10 2.1.5Cài đặt thuật toán trên C 10 2.2THUẬT TOÁN SẮP XẾP NỔI BỌT .10 2.2.1Mô tả phương pháp .10 2.2.2Ví dụ .11 2.2.3Lưu đồ thuật toán 12 2.2.4Thuật toán .13 2.3THUẬT TOÁN SẮP XẾP LỰA CHỌN 13 2.3.1Mô tả phương pháp .13 2.3.2Ví dụ .14 2.3.3Lưu đồ thuật toán 16 2.3.4Thuật toán .17 CHƯƠNG III : CÀI ĐẶT CHƯƠNG TRÌNH . 18 3.1ĐỀ BÀI 18 3.2CHƯƠNG TRÌNH .18 CHƯƠNG IV : PHẦN KẾT LUẬN . 20 4.1CÁC KẾT QUẢ ĐẠT ĐƯỢC .20 4.2ƯU VÀ NHƯỢC ĐIỂM 21 a.Ưu .21 b.Nhược .21 4.3HƯỚNG PHÁT TRIỂN .21 Trang 2 LỜI MỞ ĐẦU 1. Lý do chọn đề tài Trong hai thập kỷ qua, mô phỏng thuật toán đã được các nhà sư phạm của ngành công nghệ thông tin sử dụng như một công cụ có tính chất giúp đỡ trong việc dạy các thuật toán đồ thị, các thuật toán sắp xếp, khác nhau bằng máy tính. Nguyên nhân của việc mô phỏng thuật toán được sử dụng như một công cụ trợ giúp cho việc giảng dạy là do nó có thể cung cấp các mô phỏng động bằng đồ họa của một thuật toáncác thay đổi trong cấu trúc dữ liệu của nó trong suốt quá trình thực thi. Như một phần của quá trình học thuật toán, những sinh viên ngành công nghệ thông tin sẽ học về cấu trúc của một trình biên dịch (compiler) trong một ngôn ngữ lập trình cho quá trình đó. Điều này sẽ chỉ ra cho chúng ta từng nhiệm vụ của các giai đoạn khác nhau trong trình biên dịch. Hiện nay, một số hệ thống mô phỏng thuật toán được phát triển sau hai thập kỷ. Hầu hết các thuật toán được đề cập đến trong giai đoạn này đều là các hệ thống phổ biến hơn và tinh vi hơn các hệ thống mà thực tế đang sử dụng. Mô phỏng thuật toán ngày càng trở nên hữu ích và trở thành một giáo cụ trực quan rất quan trọng trong hầu hết các lĩnh vực, nhất là trong môi trường giáo dục. Với các nhà sư phạm của ngành công nghệ thông tin thì mô phỏng thuật toán có tác dụng như một tài liệu hướng dẫn trong việc dạy các thuật toán bằng máy tính. Đặc biệt, nó giúp học sinh và sinh viên hiểu cấu trúc dữ liệu và thuật toán nhanh hơn. Như vậy, mô phỏng thuật toán góp phần to lớn vào việc ứng dụng CNTT trong giảng dạy và góp phần vào sự phát triển nhanh chóng của hệ thống elearning. Thuật toán về sắp xếp rất đa dạng và phong phú. Vì vậy vấn đề “ Mô phỏng thuật toán sắp xếp ” được chọn để nghiên cứu trong đồ án cơ sở này. Đồ án cơ sở “Cài đặt các thuật toán sắp xếp trên mảng một chiều “ được hoàn thành với sự hướng dẫn trực tiếp của Thầy giáo : ThS Trần Bàn Thạch .Qua đây em xin chân thành cảm ơn thầy đã giúp em hoàn thành đồ án cơ sở này. Em cũng chân thành cảm ơn các thầy cô trong khoa đã giúp đỡ em trong suốt thời gian qua Trang 3 Mặc dù rất cố gắng nhưng do thời gian có hạn và khuôn khổ của đồ án nên còn nhiều thiếu sót . Em mong được sự góp ý và chỉ bảo thêm của thầy 2. Mục tiêu đề tài Nghiên cứu tổng quan về mô phỏng thuật toán. Hướng đến các kỹ thuật lập trình với mã nguồn mở và ngôn ngữ lập trình C. Áp dụng kết quả nghiên cứu làm một demo mô phỏng thuật toán sắp xếp. 3. Phạm vi nghiên cứu Trong bài báo cáo các thuật toán sắp xếp của em sẽ trình bày về khái niệm, thuật toán mô tả bằng lời , lưu đồ thuật toán .v.v. Điều quan trọng là giúp người đọc, hiểu về các thuật toán sắp xếp đơn giản, hình dung nắm bắt được quá trình chạy và ứng dụng vào thực tiễn phân tích hướng dẫn cài đặt chương trình trên máy tính. 4. Phương pháp nghiên cứu Sử dụng phương pháp thống kê mô tả và thống kê so sánh. CHƯƠNG I : CƠ SỞ LÝ THUYẾT, CÁC CÔNG CỤ LẬP TRÌNH PHỤC VỤ NGHIÊN CỨU 1.1 Cơ sở lý thuyết về thuật toán sắp xếp 1.1.1 Định nghĩa: Sắp xếpmộ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 vai trò quan trọng trong tìm kiếm dữ liệu. Chẳng hạn, nếu danh sách đã được sắp xếp theo thứ tự tăng dần (hoặc giảm dần), ta có thể sử dụng kỹ thuật tìm kiếm nhị phân hiệu quả hơn nhiều tìm kiếm tuần tự… Trong thiết kế thuật toán, ta cũng thường xuyên cần đến sắp xếp, nhiều thuật toán được thiết kế dựa trên ý tưởng xử lý các đối tượng theo một thứ tự xác định. 1.1.2 Các loại thuật toán Dựa theo cách tổ chức lưu trữ dữ liệu thì hiện nay có hai cách sắp xếp cơ bản : - Sắp xếp trong ( internal Sort ) - Sắp xếp ngoài (External Sort ) Trang 4 Sắp xếp trong : là kiểu sắp xếp mà trong đó toàn bộ dữ liệu cần sắp xếp được nạp vào bộ nhớ trong của máy tính (primary memory ) khi được thực hiện sắp xếp . Sắp xếp ngoài : là kiểu sắp xếp mà chỉ một phần của tập dữ liệu được nạp vào bộ nhớ trong , còn lại hầu hết đều được lưu trữ ở bộ nhớ ngoài (secondary storage). Một số thuật toán sắp xếp: - Sắp xếp nổi bọt - Sắp xếp chèn - Sắp xếp chọn - Sắp xếp trộn - Sắp xếp vun đống - Sắp xếp nhanh Sắp xếp theo cơ số Sắp xếp theo phân phối. Vì một số lý do khách quan và chủ quan , ở đây em chỉ đi sâu phân tích 3 loại sắp xếp đó là : Sắp xếp chèn và Sắp xếp nổi bọt và Sắp xếp chọn Trang 5 1.2 Công cụ lập trinh C 1.2.1 Lịch sử hình thành: C là ngôn ngữ lập trình cấp cao, được sử dụng rất phổ biến để lập trình hệ thống cùng với Assembler và phát triển các ứng dụng. Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỷ XX, Dennish Ritchie (làm việc tại phòng thí nghiệm Bell) đã phát triển ngôn ngữ lập trình C dựa trên ngôn ngữ BCPL (do Martin Richards đưa ra vào năm 1967) và ngôn ngữ B (do Ken Thompson phát triển từ ngôn ngữ BCPL vào năm 1970 khi viết hệ điều hành UNIX đầu tiên trên máy PDP- 7) và được cài đặt lần đầu tiên trên hệ điều hành UNIX của máy DEC PDP-11. Năm 1978, Dennish Ritchie và B.W Kernighan đã cho xuất bản quyển “Ngôn ngữ lập trình C” và được phổ biến rộng rãi đến nay. Lúc ban đầu, C được thiết kế nhằm lập trình trong môi trường của hệ điều hành Unix nhằm mục đích hỗ trợ cho các công việc lập trình phức tạp. Nhưng về sau, với những nhu cầu phát triển ngày một tăng của công việc lập trình, C đã vượt qua khuôn khổ của phòng thí nghiệm Bell và nhanh chóng hội nhập vào thế giới lập trình để rồi các công ty lập trình sử dụng một cách rộng rãi. Sau đó, các công ty sản xuất phần mềm lần lượt đưa ra các phiên bản hỗ trợ cho việc lập trình bằng ngôn ngữ C và chuẩn ANSI C cũng được khai sinh từ đó. 1.2.2 Các lệnh xử lý  Lệnh If : - Cú pháp : If ( biểu thức) < lệnh> ; Hoặc If ( biểu thức) <lệnhA>; else < lệnh B>); -Diễn giải : Nếu biểu thức đúng sẽ thực hiện LỆNH trong biểu thức . Ngược lại , nếu biểu thức SAI sẽ thực hiện LỆNH trong else ( nếu có). Trang 6  Lệnh For: - Cú pháp : for ( bt1; bt2 ; bt3) lệnh; - Diễn giải : • bt1 : là toán tử gán để tạo giá trị ban đầu cho biến điều khiển. • bt2 : biểu thức điều kiện để thực hiện vòng lặp. • bt3 : biểu thức tăng giá trị của biến điều khiển của vòng lặp.  Lệnh Do While - Cú pháp : do lệnh 1 ; while ( biểu thức 1 ) ; - Diễn giải : +b1. Máy thực hiện câu lệnh 1 ; +b2. Sau đó tính giá trị của biểu thức 1, nếu giá trị của biểu thức 1 sai thì chương trình thoát ra khỏi vòng lặp. Nếu giá trị của biểu thức 1 đúng thì quay lại bước 1.  Lệnh while : - Cú pháp : while ( biểu thức 1) lệnh 1 ; - Diễn giải : o b1. Tính giá trị của biểu thức 1. o b2. Nếu giá trị của biểu thức 1 sai (= 0) thì chương trình ra khỏi vòng While. o b3. Nếu giá trị của biểu thức đúng thì thực hiện lệnh 1 và quay lại bước 1. Trang 7 CHƯƠNG II : Phân tích và thiết kế thuật toán : 2.1 Thuật toán sắp xếp chèn 2.1.1 Mô tả phương pháp Cho một tập hơn gồm n phần tử được lưu trữ trong một mảng A Xem danh sách đầu tiên đã có thứ tự chỉ có một phần tử là A[1] Lần chèn 1 : Chèn A[2] vào danh sách tại vị trí sao cho danh sách có thứ tự có hai phần tử là A[1] và A[2] . Lần chèn 2 : Chèn A[3] vào danh sách tại vị trí sao cho danh sách có thứ tự có 3 phần tử là A[1] , node A[2] và A[3] … Lần chèn n-1 : Chèn A[n] vào danh sách tại vị trí sao cho danh sách có thứ tự có n phần tử là A[1] , A[2] , A[3] , … , A[n]. 2.1.2 Sơ đồ mô tả phương pháp Trang 8 2.1.3 Ví dụ Cho dãy số được lưu trong mảng A là : ( Ví dụ này sắp xếp theo tăng dần ) 25 55 45 40 10 90 85 35 Trang 9 2.1.4 Lưu đồ thuật toán Algorithm Insertion_Sort(ref A<array>,val n<int>) Mô tả : Giải thuật sắp xếp kiểu lựa chọn ( chèn ) Dữ liệu vào : Mảng A lưu trữ n phần tử chưa được sắp xếp . Dữ liệu ra : Mảng A lưu trữ n phần tử đã được sắp xếp . Xử lý : Với mỗi : i = 2 … nthực hiện Gán : X = A[i] // Là phần tử cần chèn Với mỗi j = i -1 …1 Nếu ( X < A[j] ) thì Gán : A[ j+1 ] = A[j] Ngược lại : break Gán : A[ j + 1] = X Kết thúc 2.1.5 Cài đặt thuật toán trên C 2.2 Thuật toán sắp xếp nổi bọt 2.2.1 Mô tả phương pháp Cho một tập hợp gồm n phần tử được lưu trong mảng A Trang 10 . storage). Một số thuật toán sắp xếp: - Sắp xếp nổi bọt - Sắp xếp chèn - Sắp xếp chọn - Sắp xếp trộn - Sắp xếp vun đống - Sắp xếp nhanh Sắp xếp theo cơ số Sắp xếp. chọn để nghiên cứu trong đồ án cơ sở này. Đồ án cơ sở Cài đặt các thuật toán sắp xếp trên mảng một chiều “ được hoàn thành với sự hướng dẫn trực tiếp của

Ngày đăng: 28/11/2013, 00:01

Từ khóa liên quan

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

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

Tài liệu liên quan