1. Trang chủ
  2. » Luận Văn - Báo Cáo

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 561 8

Đ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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 1,6 MB

Nội dung

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

Trang 1

Sinh viên thực hiện : Hoàng Vũ Thanh Thủy Lớp : HTTT-K12A

Giáo viên hướng dẫn : ThS.Nguyễn Thu Hương

BÁO CÁO THỰC TẬP CƠ SỞ

Đề tài :

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

Trường Đại học Công nghệ thông tin và truyền thông

Khoa công nghệ thông tin

Trang 2

Nội dung báo cáo

Chương I : Tổng quan về ngôn ngữ C# 1.1 Giới thiệu về ngôn ngữ C#

1.2 Ưu điểm của ngôn ngữ C#

1.3 Những cơ sở của ngôn ngữ C#

Chương II: Xây dựng mô phỏng

2.1 Giới thiệu một số thuật toán sắp xếp 2.2 Chạy demo chương trình

Trang 3

.NET Framework là một nền tảng phát

triển phổ biến để xây dụng các ứng cho

 Window

 Window Store,

 Windows Phone,

 Window Server và

 Window Azure

.NET Framework bao gồm ngôn ngữ

C#, Visual Basic, Common Language

Runtime và một thư viên ( class library)

rộng lớn.

1.1 Giới thiệu về ngôn ngữ C# .NET Framework

Trang 4

 C# là ngôn ngữ lập trình được phát triển từ C và

C++ và được Microsoft rất chú trọng đầu tư trong

thời gian vừa qua.

 C# là một ngôn ngữ hướng đối tượng và an toàn

cho phép các nhà phát triển dễ xây dựng một loạt các

ứng dụng an toàn và mạnh mẽ chạy trên NET

Framework.

 Sử dụng C# để tạo ra các ứ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

cơ sở dữ liệu, và nhiều hơn thế nữa

1.1 Giới thiệu về ngôn ngữ C#

 Ngôn ngữ C#

 Visual C# cung cấp một 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), và

nhiều công cụ khác để làm cho nó dễ dàng hơn cho việc

phát triển các ứng dụng dựa trên phiên bản 4.0 của

ngôn ngữ C# và phiên bản 4.0 của NET Framework.

Trang 5

1.2 Ưu điểm của ngôn ngữ C#

 C# là ngôn ngữ đơn giản

C# là ngôn ngữ hiện đại

 C#là ngôn ngữ hướng đối tượng

C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo

 C# là ngôn ngữ ít từ khóa

Trang 6

1.4 Những cơ sở của ngôn ngữ C#

 Các kiểu dữ liệu : 2 kiểu : giá trị và tham chiếu.

Biến kiểu giá trị được lưu trong vùng nhớ stack, còn biến kiểu tham chiếu được lưu trong vùng nhớ heap.

 Biến và hằng :

Biến : Biến dùng để lưu trữ dữ liệu.Mỗi biến thuộc về một kiểu dữ liệu nào đó.

Cú pháp : [Kiểu dữ liệu] [Tên biến]

Hằng :Hằng là một biến nhưng giá trị không thay đổi theo thời gian

Cú pháp : Const [Kiểu dữ 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 là một 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 và đối tượng

 Định nghĩa lớp

Cú pháp : [attribute][bổ từ truy xuất] class định danh [:lớp cơ sở]

 Cách tạo đối tượng

Tạo một đối tượng bằng cách khai báo kiểu và sau đó dùng từ khóa new để tạo như trong Java và C++.

 Cách sử dụng các thành viên tĩnh trong C#.

 Hủy đối tượng.

Đóng gói dữ liệu với Property : Phương thức get; set

Trang 7

CHƯƠNG 2:

XÂY DỰNG MÔ PHỎNG

2.1 Giới thiệu một số thuật toán sắp xếp

2.2 Chạy demo chương trình

Trang 8

Chọn phần tử nhỏ nhất trong n phần tử ban đầu, đưa phần tử

này về vị trí đầu tiên của dãy hiện hành Sau đó không quan

tâm đến nó nữa, xem dãy hiện hành chỉ còn n-1 phần tử của

dãy ban đầu, bắt đầu từ vị trí thứ 2 Lặp lại quá trình trên cho

dãy hiện hành đến khi dãy hiện hành chỉ còn một phần tử Dãy

ban đầu có n phần tử, vậy tóm tắt ý tưởng thuật toán là thực

hiện n-1 lượt việc đưa phần tử nhỏ nhất trong dãy hiện hành

về vị trí đúng ở đầu dãy

2.1.1 Sắp xếp chọn ( Selection Sort)

Tư tưởng thuật toán

Trang 9

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 sắp xếp.

 Bước 1: Khởi động i = 0  Bước 2: Tìm phần tử nhỏ nhất a[min] trong dãy hiện hành từ a[i] đến a[N]

 Bước 3: Hoán vị a[min] và a[i]  Bước 4: i = i+1

Nếu i < N-1: quay trở lại bước 2 Ngược lại: STOP!

Trang 10

2.1.2 Sắp xếp chèn ( Insertion Sort)

Tư tưởng thuật toán

Sắp xếp chèn là một thuật toán sắp xếp bắt chước

cách 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 trật tự người chơi bài rút

lần lượt từ quân thứ 2, so với các quân đứng trước nó

để chèn vào vị trí thích hợp.

Giả sử ta có dãy a 1 , a 2 , …, an trong đó i phần tử đầu

tiên a 1 , a 2 , …, a i đã có thứ tự Ý tưởng của thuật toán

là tìm vị trị thích hợp và chèn phần tử a i+1 vào dãy đã

có thứ tự trên để có được một dãy mới có thứ tự Cứ

thế, làm đến cuối dãy ta sẽ được một dãy có thứ tự.

Các bước thực hiện

Trang 11

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 sắp xếp Bước 1: Khởi động i= 1// A[0] là phần tử đã sắp xếp.

Bước 2 : Tìm vị trí pos cần chèn trong đoạn A[1]…A[i-1]

pos= i-1

x =A[i]

Trong khi A[pos]>x và pos>=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 i<n quay trở lại bước 2.

Ngược lại: STOP

Trang 12

2.1.3 Sắp xếp nổi bọt ( Buble Sort)

Sắp xếp nổi bọt là một thuật toán sắp xếp đơn giản,

với thao tác cơ bản là so sánh hai phần tử  kề nhau,

nếu chúng chưa đứng đúng thứ tự thì đổi chỗ

(swap) Có thể tiến hành từ trên xuống (bên trái

sang) hoặc từ dưới lên (bên phải sang). Sắp xếp nổi

bọt còn có tên là sắp xếp bằng so sánh trực tiếp Nó

sử dụng phép so 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.

 Tư tưởng thuật toán

 Các bước

Trang 13

 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]<a[j-1]: hoán vị a[j], a[j-1]

j = j - 1

 Bước 3: i = i + 1 Nếu i <= N-1: quay trở lại bước 2.

2.1.3 Sắp xếp nổi bọt ( Buble Sort)

Trang 14

2.1.4 Sắp xếp nhanh ( Quick Sort)

 Tư tưởng thuật toán

 QuickSort chia mảng thành hai danh 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ư 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

Trang 15

Sắp xếp một đoạn bất kỳ X[L], ,X[R] với điều kiện L < R

- Bước 1: M = (L+R) div 2, key=X[Mt]

- Bước 2: i=L+1, j=R

- Bước 3: 

* Nếu X[i] < M thì i=i+1; 

* Nếu X[j] > Mthì j=j-1; 

- Bước 4: Nếu i>j thì đổi chổ X[i] với X[j], quay về Bước 3

- Bước 5: Lặp lại từ Bước 1 đến Bước 3 với đoạn X[L], ,X[j-1] và X[j] đến X[R], dừng khi tất cả đoạn có độ dài là 1. 

  2.1.4 Sắp xếp nhanh ( Quick Sort)

Trang 16

17 32 06 25

k

Bước 1: phần tử tại vị trí biến duyệt j là 06 nhỏ hơn tại vị trí biến duyệt ì là 17 nên ta đưa 06 xuống dãy mới và tăng j lên Đồng thời,biến duyệt k cũng tăng lên 1

06

Bước 2: Phần tử tại vị trí I là 17 nhỏ hơn phần tử tại vị trí j là 25 nên ta đưa 17xuống

dãy mới và tăng i lên 1, biến duyệt k cũng tăng lên 1

i

k

k

25

j

Trang 17

17 32 06 25

k

Bước 3: phần tử tại vị trí biến duyệt j là 25 nhỏ hơn tại vị trí biến duyệt i là 32 nên đưa 25 xuống

06

Bước 4:

k

k

Trang 18

2.1.5 Sắp xếp trộn ( Merge Sort)

Ðể 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 theo phương pháp trộn.

Trong phương pháp Merge sort, 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ỉ gồm 1 dãy con không giảm Nghĩa là dãy ban đầu đã được sắp xếp.

Trộn trực tiếp: đây là phương pháp trộn đơn giản nhất Việc phân hoạch dãy ban đầu

đơn giản như sau: Với dãy ban đầu có n phân tử, ta cứ phân hoạch thành n dãy con

Vì rằng mỗi dãy con chỉ có 1 phần tử nên nó là dãy có thứ tự Cứ mỗi lần tách – trộn, chiều dài của dãy con sẽ được nhân đôi.

 Tư tưởng thuật toán

Trang 19

2.1.5 Sắp xếp trộn ( Merge Sort)

 Bước 1 :

k = 1; // k là chiều dài của dãy con trong bước hiện hành

 Bước 2 : Tách dãy a 1 , a 2 , , a n  thành 2 dãy b, c theo nguyên tắc luân phiên từng nhóm k

phần tử:

b = a 1 , , a k,  a 2k+1 , , a 3k ,

c = a k+1 , , a 2k,  a 3k+1 , , a 4k ,

 Bước 3 : Trộn từng cặp dãy con gồm k phần tử của 2 dãy b, c vào a.

 Bước 4 :

k = k*2;

Nếu k < n thì trở lại bước 2.

Ngược lại: Dừng

Trang 20

Kết luận

1.Kết quả đạt được

Dựa trên mục tiêu của đề tài “ 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 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 sót trong

những bài báo cáo sau.

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

TỪ KHÓA LIÊN QUAN

w