Tìm hiểu về ngôn ngữ C và cài đặt một số thuật toán sắp xếp.

20 560 8
Tìm hiểu về ngôn ngữ C và cài đặt một số thuật toán sắp xếp.

Đ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

Slide báo cáo thực tập cơ sở, cài đặt một số thuật toán sắp xếpcó đủ từ tư tưởng thuật toán, các bước thực hiện , sơ đồ khối bao gồm 5 thuật toán sắp xếp : SX nổi bọt, SX chèn,SX chọn , SX nhanh và SX trộn

Trường Đại học Công nghệ thông tin truyền thông Khoa công nghệ thông tin BÁO CÁO THỰC TẬP CƠ SỞ Đề tài : Tìm hiểu ngôn ngữ C# cài đặt số thuật toán xếp Sinh viên thực : Hoàng Vũ Thanh Thủy Lớp : HTTT-K12A Giáo viên hướng dẫn : ThS.Nguyễn Thu Hương Nội dung báo cáo Chương I : Tổng quan ngôn ngữ C# 1.1 Giới thiệu ngôn ngữ C# 1.2 Ưu điểm ngôn ngữ C# 1.3 Những sở ngôn ngữ C# Chương II: Xây dựng mô 2.1 Giới thiệu số thuật toán xếp 2.2 Chạy demo chương trình 1.1 Giới thiệu ngôn ngữ C# .NET Framework NET Framework tảng phát triển phổ biến để xây dụng ứng cho  Window  Window Store,  Windows Phone,  Window Server  Window Azure NET Framework bao gồm ngôn ngữ C#, Visual Basic, Common Language Runtime thư viên ( class library) rộng lớn 1.1 Giới thiệu ngôn ngữ C#  Ngôn ngữ C#  C# ngôn ngữ lập trình được phát triển từ C C++ được Microsoft rất chú trọng đầu tư thời gian vừa qua  C# ngôn ngữ hướng đối tượng an toàn cho phép nhà phát triển dễ xây dựng loạt ứng dụng an toàn mạnh mẽ chạy NET Framework  Sử dụng C# để tạo ứng dụng truyền thống Windows, dịch vụ Web XML, thành phần phân phối (components), ứng dụng dạng client-server, ứng dụng sở liệu, nhiều  Visual C# cung cấp trình soạn thảo mã nguồn tiên tiến, thuận tiện việc thiết kế giao diện người dùng (interface desinger), trình kiểm lỗi (debugger), nhiều công cụ khác để làm cho dễ dàng cho việc phát triển ứng dụng dựa phiên 4.0 ngôn ngữ C# phiên 4.0 NET Framework 1.2 Ưu điểm ngôn ngữ C#  C# ngôn ngữ đơn giản C# ngôn ngữ đại  C# ngôn ngữ từ khóa  C#là ngôn ngữ hướng đối tượng  C# ngôn ngữ mạnh mẽ mềm dẻo 1.4 Những sở ngôn ngữ C#  Các kiểu liệu : kiểu : giá trị tham chiếu Biến kiểu giá trị được lưu vùng nhớ stack, biến kiểu tham chiếu được lưu vùng nhớ heap  Biến : Biến : Biến dùng để lưu trữ liệu.Mỗi biến thuộc kiểu liệu Cú pháp : [Kiểu liệu] [Tên biến] Hằng :Hằng biến giá trị không thay đổi theo thời gian Cú pháp : Const [Kiểu liệu] [Tên hằng] = giá trị;      Biểu thức: Bất kỳ câu lệnh định lượng giá trị được gọi biểu thức Khoảng trắng Câu lệnh: Câu lệnh rẽ nhánh không điều kiện ,Lệnh rẽ nhánh có điều kiện( If else, switch case) ,Lệnh lặp(do while, while, for,goto) Toán tử Lớp đối tượng  Định nghĩa lớp Cú pháp : [attribute][bổ từ truy xuất] class định danh [:lớp sở]  Cách tạo đối tượng Tạo đối tượng cách khai báo kiểu sau dùng từ khóa new để tạo Java C++  Cách sử dụng thành viên tĩnh C#  Hủy đối tượng Đóng gói liệu với Property : Phương thức get; set CHƯƠNG 2: XÂY DỰNG MÔ PHỎNG 2.1 Giới thiệu số thuật toán xếp 2.2 Chạy demo chương trình 2.1.1 Sắp xếp chọn ( Selection Sort) Tư tưởng thuật toán Chọn phần tử nhỏ nhất n phần tử ban đầu, đưa phần tử vị trí đầu tiên 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, bắt đầu từ 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ử nhỏ nhất dãy hành vị trí đúng đầu dãy 2.1.1 Sắp xếp chọn ( Selection Sort) Input: mảng A có n phần tử được nhập từ bàn phím Output: Mảng A được xếp  Bước 1: Khởi động i =  Bước 2: Tìm phần tử nhỏ nhất a[min] dãy hành từ a[i] đến a[N]  Bước 3: Hoán vị a[min] a[i]  Bước 4: i = i+1 Nếu i < N-1: quay trở lại bước Ngược lại: STOP! 2.1.2 Sắp xếp chèn ( Insertion Sort) Tư tưởng thuật toán Sắp xếp chèn thuật toán xếp bắt chước cách xếp quân người chơi Muốn theo trật tự người chơi rút lần lượt từ quân thứ 2, so với quân đứng trước để chèn vào vị trí thích hợp Giả sử ta có dãy a1, a2, …, an i phần tử đầu tiên a1, a2, …, có thứ tự Ý tưởng thuật toán tìm vị trị thích hợp chèn phần tử a i+1 vào dãy có thứ tự để có được dãy có thứ tự Cứ thế, làm đến cuối dãy ta được dãy có thứ tự Các bước thực 2.1.2 Sắp xếp chèn ( Insertion Sort) Input : mảng A gồm n phần tử nhập từ bàn phím Output : Mảng A được xếp Bước 1: Khởi động i= 1// A[0] phần tử xếp Bước : Tìm vị trí pos cần chèn đoạn A[1]…A[i-1] pos= i-1 x =A[i] Trong A[pos]>x pos>=0 Dịch chuyển A[pos] sang phải đơn vị để chuẩn bị chỗ chèn cho x Bước : A[pos+1] = x // chèn x vào dãy Bước : i=i+1 Nêu ii thực hiện: Nếu a[j]j đổi chổ X[i] với X[j], quay Bước - Bước 5: Lặp lại từ Bước đến Bước với đoạn X[L], ,X[j-1] X[j] đến X[R], dừng tất đoạn có độ dài 1.  Bước 1: phần tử vị trí biến duyệt j 06 nhỏ vị trí biến duyệt ì 17 nên ta đưa 06 xuống dãy tăng j lên Đồng thời,biến duyệt k tăng lên j i 17 32 06 25 k 06 k Bước 2: Phần tử vị trí I 17 nhỏ phần tử vị trí j 25 nên ta đưa 17xuống dãy tăng i lên 1, biến duyệt k tăng lên j i 17 25 32 k 06 17 Bước 3: phần tử vị trí biến duyệt j 25 nhỏ vị trí biến duyệt i 32 nên đưa 25 xuống j i 17 32 06 25 06 25 k 06 k 25 17 Bước 4: 17 32 k 06 17 25 32 2.1.5 Sắp xếp trộn ( Merge Sort)  Tư tưởng thuật toán Ðể xếp dãy a , a , , a n , giải thuật Merge Sort dựa nhận xét sau: Mỗi dãy a , a , , a n bất kỳ coi tập hợp dãy liên tiếp mà mồi dãy có thứ tự =>Như vậy, cách tiếp cận để xếp dãy tìm cách làm giảm số dãy không giảm Ðây hướng tiếp cận thuật toán xếp theo phương pháp trộn Trong phương pháp Merge sort, mấu chốt vấn đề cách phân hoạch dãy ban đầu thành dãy Sau phân hoạch xong, dãy ban đầu được tách thành dãy phụ theo nguyên tắc phân phối luân phiên Trộn từng cặp dãy hai dãy phụ thành dãy dãy ban đầu, ta nhân lại dãy ban đầu với số lượng dãy nhất giảm nửa Lặp lại qui trình sau số bước, ta nhận được dãy gồm dãy không giảm Nghĩa dãy ban đầu được xếp Trộn trực tiếp: phương pháp trộn đơn giản nhất Việc phân hoạch dãy ban đầu đơn giản sau: Với dãy ban đầu có n phân tử, ta phân hoạch thành n dãy Vì dãy có phần tử nên dãy có thứ tự Cứ lần tách – trộn, chiều dài dãy được nhân đôi 2.1.5 Sắp xếp trộn ( Merge Sort)  Bước : k = 1; // k chiều dài dãy bước hành  Bước : Tách dãy a1, a2, , an thành dãy b, c theo nguyên tắc luân phiên từng nhóm k phần tử: b = a1, , ak, a2k+1, , a3k, c = ak+1, , a2k, a3k+1, , a4k,  Bước : Trộn từng cặp dãy gồm k phần tử dãy b, c vào a  Bước : k = k*2; Nếu k < n trở lại bước Ngược lại: Dừng Kết luận 1.Kết đạt được Dựa mục tiêu đề tài “ Tìm hiểu ngôn ngữ C# ứng dụng cài đặt số thuật toán xếp ” thời gian thực tập em đạt được kết sau:  Nắm vững ngôn ngữ C#  Hiểu thiết kế mô thành công thuật toán xếp Những hạn chế chương trình Do thời gian nghiên cứu có hạn khả chưa cao nên chương trình số hạn chế sau: - Độ dài mảng xếp tối đa được 15 phần tử - Trong thuật toán merge sort cài đặt được thuật toán trộn trực tiếp đơn giản nhất, em chưa cài đặt thành công thuật toán trộn tự nhiên Hướng phát triển Xây dựng mô thuật toán xếp ngày hoàn thiện triển khai ứng dụng thực tế Em rất mong ý kiến đóng góp thầy cô bạn để chương trình em được hoàn thiện hơn, rút kinh nghiệm khắc phục thiếu sót báo cáo sau [...]... Tìm hiểu ngôn ngữ C# và ứng dụng c i đặt một số thuật toán sắp xếp ” trong thời gian th c tập em đã đạt đươ c kết quả sau:  Nắm vững về ngôn ngữ C#  Hiểu và thiết kế mô phỏng thành c ng c c thuật toán sắp xếp 2 Những hạn chế c a chương trình Do thời gian nghiên c u c hạn và khả năng chưa cao nên chương trình c n một số hạn chế sau: - Độ dài mảng sắp xếp tối đa mới chỉ đươ c 15 phần tử - Trong thuật. .. sách bằng c ch so sánh từng phần tử c a danh sách với một phần tử đươ c chọn đươ c gọi là phần tử chốt Những phần tử nhỏ hơn ho c bằng phần tử chốt đươ c đưa về phía trư c và nằm trong danh sách con thứ nhất, c c phần tử lớn hơn chốt đươ c đưa về phía sau và thu c danh sách con thứ hai C tiếp t c chia như vậy tới khi c c danh sách con đều c độ dài bằng 1  C c c cách chọn phần tử chốt như... - Trong thuật toán merge sort mới chỉ c i đặt đươ c thuật toán trộn tr c tiếp là đơn giản nhất, em chưa c i đặt thành c ng thuật toán trộn tự nhiên 3 Hướng phát triển Xây dựng mô phỏng thuật toán sắp xếp ngày một hoàn thiện và triển khai ứng dụng trong th c tế Em rất mong ý kiến đóng góp c a thầy c và c c bạn để chương trình c a em đươ c hoàn thiện hơn, rút kinh nghiệm và kh c ph c những thiếu... 2.1.5 Sắp xếp trộn ( Merge Sort)  Tư tưởng thuật toán Ðể sắp xếp dãy a 1 , a 2 , , a n , giải thuật Merge Sort dựa trên nhận xét sau: Mỗi dãy a 1 , a 2 , , a n bất kỳ đều c thể coi như là một tập hợp c c dãy con liên tiếp mà mồi dãy con đều đã c thứ tự =>Như vậy, một c ch tiếp c n để sắp xếp dãy là tìm c ch làm giảm số dãy con không giảm c a nó Ðây chính là hướng tiếp c n c a thuật toán sắp xếp.. . sau:  Chọn phần tử đứng đầu ho c đứng cuối làm phần tử chốt  Chọn phần tử đứng giữa danh sách làm phần tử chốt  Chọn phần tử trung vị trong 3 phần tử đứng đầu, đứng giữa và đứng cuối làm phần tử chốt  Chọn phần tử ngẫu nhiên làm phần tử chốt (C ch này c thể dẫn đến khả năng rơi vào c c trường hợp đ c biệt)  Sơ đồ khối c a thuật toán 2.1.4 Sắp xếp nhanh ( Quick Sort) Sắp xếp một đoạn... mấu chốt c a vấn đề là c ch phân hoạch dãy ban đầu thành c c dãy con Sau khi phân hoạch xong, dãy ban đầu sẽ đươ c tách ra thành 2 dãy phụ theo nguyên t c phân phối đều luân phiên Trộn từng c p dãy con c a hai dãy phụ thành một dãy con c a dãy ban đầu, ta sẽ nhân lại dãy ban đầu nhưng với số lượng dãy con ít nhất giảm đi một nửa Lặp lại qui trình trên sau một số bư c, ta sẽ nhận đươ c 1 dãy chỉ... sánh c c phần tử nên là một giải thuật sắp xếp kiểu so sánh  C c bư c 2.1.3 Sắp xếp nổi bọt ( Buble Sort)  Bư c 1: Khởi động i = 0  Bư c 2: j = N -1//Duyệt từ cuối dãy về vị trí i Trong khi j>i th c hiện: Nếu a[j]=0 Dịch chuyển A[pos] sang phải 1 đơn vị để chuẩn bị chỗ chèn cho x Bư c 3 : A[pos+1] = x // chèn x vào dãy Bư c 4 : i=i+1 Nêu

Ngày đăng: 25/05/2016, 16:30

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

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

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

Tài liệu liên quan