Đề tài tìm hiểu ngôn ngữ lập trình c và ứng dụng cài đặt thuật toán sắp xếp chọn và sắp xếp chèn 1.2 Công cụ lập trình C1.1.2Lịch sử hình thànhNgôn ngữ C do Brain W.Kemighan và Dennis M.Ritchie phát triển và đầu những năm 70 tại phòng thí nghiệm BELL (thuộc công ty viễn thông ATT của Hoa Kỳ) với mục đích ban đầu để phát triển hệ điều hành UNIX. Song nhờ tính ưu việt và mềm dẻo nên nó đã được giới tin học nhanh chóng chấp nhận là một ngôn ngữ chính thống nhà nghề.Đến năm 1978, bản in đầu tiên về ngôn ngữ C đã được in thành sách “The programming language” do Kermighan và Richie viết. C cũng mau chóng được Viện tiêu chuẩn hóa của Mỹ (ANSI: American National Standard Institute) làm iêu chuẩn với tên gọi “ANSI C” và năm 1983. Tổ chức tiêu chuẩn Quốc tế ISO (Internet Standard Ogranization) cũng xây dựng chuẩn cho C.Phần lớn các ý tưởng quan trọng nhất của C xuất phát từ một ngôn ngữ cũ hơn có tên là BCPL do Martin Richards nghiên cứu ảnh hưởng của BCPL lên C gián tiếp qua ngôn ngữ B, do Ken Thompson viết năm 1970 cho hệ UNIX chạy trên họ máy tính PDP7.Ngoài việc C được dùng để viết hệ điều hành UNIX (hiện nay trên 90% chương trình nguồn của các hệ điều hành UNIX được viết bằng C, chưa đầy 10% bằng hợp ngữ), người ta nhanh chóng nhận ra sức mạnh của C trong việc xử lí các vấn đề hiện đại của tin học: xử lí số, văn bản, cơ sở dữ liệu, lập trình hướnh đối tượng. Thực tế C đã tổ hợp được các thành tựu tiên tiến của tin học và đã trở thành một chuẩn mực mặc nhiên.Liên quan đến sự hình thành và phát triển của ngôn ngữ, có một số sự kiện đánh quan tâm sau: Năm 1978 cuốn giáo trình dạy lập trình bằng ngôn ngữ C với tên “The C programming language” do chính hai tác giả của ngôn ngữ Brain W.Kemighan và Dennism M.Ritchie biên soạn đã được xuất bản và được phổ biến rộng rãi. Năm 1983, một tiểu ban của viện tiêu chuẩn quốc gia Mỹ (ANSI được thành lập nhằm đề xuất ra một chuẩn cho ngôn ngữ. Năm 1988, chuẩn ANSI C chính thức được ban hành. Chuẩn này bao gồm các mô tả về ngôn ngữ theo KR và quy định các thư viện chuẩn của ngôn ngữ C, nhờ đó tăng tính khả chuyển của ngôn ngữ viết bằng C.Trong thế giới PC, có các hệ chương trình dịch C nổi tiếng như là: Turbo C, Borland C của Borland Inc.MSC, VC của Microsoft Corp.Lattice C của Lattice.Sự phát triển của ngôn ngữ lập trình trong những năm 80 đã đưa đến phong cách lập trình hướng đối tượng mà một trong những ngôn ngữ rất được ưa dùng là C++, bổ sung mới các yếu tố hướng đối tượng vào ngôn ngữ C. 1.2.2 Đặc điểm của ngôn ngữ lập trình CNgôn ngữ C có những đặc điểm cơ bản sau: Tính cô đọng (compact): C chỉ có 32 từ khóa chuẩn và 40 toán tử chuẩn, nhưng hầu hết đều được biểu diễn bằng những chuỗi ký tự ngắn gọn. Tính cấu trúc (structured): C có một tập hợp những chỉ thị của lập trình như cấu trúc lựa chọn, lặp… Từ đó các chương trình viết bằng C được tổ chức rõ ràng, dễ hiểu. Tính tương thích (compatible): C có bộ tiền xử lý và một thư viện chuẩn vô cùng phong phú nên khi chuyển từ máy tính này sang máy tính khác các chương trình viết bằng C vẫn hoàn toàn tương thích. Tính linh động (flexible): C là một ngôn ngữ rất uyển chuyển và cú pháp, chấp nhận nhiều cách thể hiện, có thể thu gọn kích thước của các mã lệnh làm chương trình chạy nhanh hơn. Biên dịch (compile): C cho phép biên dịch nhiều tập tin chương trình riêng rẽ thành các tập tin đối tượng (object) và liên kết (link) các đối tượng đó lại với nhau thành một chương trình có thể thực thi được (executable) thống nhất.
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ 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 VỀ NGÔN NGỮ LẬP TRÌNH C VÀ ỨNG DỤNG NGÔN NGỮ LẬP TRÌNH C CÀI ĐẶT THUẬT TOÁN SẮP XẾP CHỌN VÀ SẮP XẾP CHÈN Giáo viên hướng dẫn: Sinh viên thực hiện: Lớp: Thái Nguyên, tháng 5 năm 2010 MỤC LỤC 2 LỜI NÓI ĐẦU Hiện nay trong hầu hết các hệ lưu trữ, quản lý dữ liệu, thao tác tìm kiếm thường được thực hiện nhiều nhất để khai thác thông tin một cách nhanh chóng và muốn việc tìm kiếm một cách nhanh chóng thì dữ liệu cần phải được sắp xếp sẵn, ngăn nắp theo một trật tự, hệ thống nhất định sẽ cho phép chúng ta tìm kiếm nhanh, việc sắp xếp có ý nghĩa rất lớn trong quản lí và lưu trữ . Do đó khi xây dựng một hệ quản lý thông tin trên máy tính, bên cạnh các thuật toán tìm kiếm, các thuật toán sắp xếp dữ liệu cũng là một trong những chủ đề được quan tâm hàng đầu. Hiện nay có rất nhiều thuật toán sắp xếp đã được xây dựng và mỗi thuật toán lại có mức độ hiệu quả khác nhau, trong đó có những thuật toán cơ bản như: 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 Trong bài báo cáo thực tập cơ sở này em sẽ tìm hiểu chi tiết về hai thuật toán là: thuật toán sắp xếp chèn, sắp xếp chọn và ứng dụng ngôn ngữ lập trình C để cài đặt hai thuật toán trên. Em xin được gửi lời cảm ơn trân thành đến cô Th.s Đoàn Thị Bích Ngọc đã giúp đỡ em trong quá trình thực hiện đề tài này. Sinh viên: 3 CHƯƠNG 1: CƠ SỞ LÍ THUYẾT, CÔNG CỤ LẬP TRÌNH C 1.1 Cơ sở lí thuyết về thuật toán 1.1.1 Khái niệm thuật toán Thuật toán là một khái niệm cơ bản của Toán học và Tin học. Khi viết một chương trình máy tính, người ta thường cài đặt một phương pháp đã được nghĩ ra trước đó để giải quyết một vấn đề. Từ "thuật toán" được dùng trong khoa học máy tính để để chỉ sự mô tả một phương pháp giải bài toán thích hợp cho việc cài đặt thành các chương trình nhờ các ngôn ngữ lập trình. Một thuật toán thường được thể hiện bởi một thủ tục gồm một dãy hữu hạn bước mà theo đó ta sẽ đạt đến lời giải cho bài toán. Người ta có thể trình bày thuật toán bằng cách liệt kê ra các bước của thuật toán sử dụng ngôn ngữ tự nhiên hay một ngôn ngữ qui ước nào đó chẳng hạn sử dụng một ngôn ngữ lập trình nào đó gần với ngôn ngữ tự nhiên. Ví dụ : thuật toán tìm phần tử lớn nhất trong một dãy hữu hạn các số nguyên. Bài toán tìm phần tử lớn nhất trong một dãy hữu hạn tương đối tầm thường. Tuy nhiên đây là một trong những ví dụ khá tốt để minh họa cho khái niệm về thuật toán. Có nhiều vấn đề mà trong đó đòi hỏi phải tìm số nguyên lớn nhất trong một dãy số. Chẳng hạn như việc tìm ra một học sinh có điểm cao nhất trong một kỳ thi, hay tìm ra một nhân viên có năng suất cao nhất trong một xí nghiệp, v.v Chúng ta có nhiều cách để giải bài toán này. Một trong những phương pháp để tìm phần tử lớn nhất trong một dãy số nguyên là thực hiện một thủ tục theo các bước sau đây: • Trước hết ta đặt cho giá trị lớn nhất tạm thời bằng số nguyên đầu tiên. (Giá trị lớn nhất tạm thời này chính là giá trị lớn nhất ở mỗi giai đoạn của thủ tục.) • So sánh số nguyên kế tiếp trong dãy với giá trị lớn nhất tạm thời, và nếu nó lớn hơn giá trị lớn nhất tạm thời thì đặt cho giá trị lớn nhất tạm thời bằng số nguyên này. • Lặp lại bước 2 nếu còn số nguyên trong dãy chưa được xét tới. • Dừng nếu không còn số nguyên nào trong dãy chưa được xét. Giá trị lớn nhất tạm thời lúc này chính là giá trị lớn nhất trong dãy số. 4 1.1.2 Biểu diễn thuật toán Ðể trình bày một thuật toán hay biểu diễn một thuật toán, ta có thể sử dụng các phương pháp biểu diễn thuật toán sau đây: Dùng ngôn ngữ tự nhiên. Dùng lưu đồ hay sơ đồ khối. Dùng mã giả. Lưu đồ: Ngôn ngữ lưu đồ hay sơ đồ khối là một công cụ rất trực quan để diễn đạt các thuật toán. Biểu diễn bằng lưu đồ sẽ giúp ta có được một cái nhìn tổng quan về toàn cảnh của quá trình xử lý theo thuật toán. Lưu đồ là một hệ thống các nút có hình dạng khác nhau, thể hiện các chức năng khác nhau và được nối với nhau bởi các cung. Lưu đồ được tạo thành bởi 4 thành phần chủ yếu sau đây: • Nút giới hạn: được biểu diễn bởi hình ôvan có ghi chữ bên trong như : Các nút trên còn được gọi là nút đầu và nút cuối của lưu đồ. • Nút thao tác: là một hình chữ nhật có ghi các lệnh cần thực hiện • Nút điều kiện: thường là một hình thoi có ghi điều kiện cần kiểm tra. Trong các cung nối với nút này có 2 cung ra chỉ hướng đi theo 2 trường hợp: điều kiện đúng và điều kiện sai. • Cung: là các đường nối từ nút này đến nút khác của lưu đồ. Hoạt động của thuật toán theo lưu đồ được bắt đầu từ nút đầu tiên. Sau khi thực hiện các thao tác hoặc kiểm tra điều kiện ở mỗi nút thì bộ xử lý sẽ theo một cung để đến nút khác. Quá trình thực hiện thuật toán dừng khi gặp nút kết thúc hay nút cuối. Trong bài này chúng ta chủ yếu là sử dụng ngôn ngữ tự nhiên và mã giả để trình bày thuật toán. Trong cách sử dụng ngôn ngữ tự nhiên ta sẽ liệt kê các bước thực hiện 5 các thao tác hay công việc nào đó của thuật toán bằng ngôn ngữ mà con người sử dụng một cách phổ thông hàng ngày. Các thuật toán được trình bày trong hai ví dụ trên chính là cách biểu diễn thuật toán dùng ngôn ngữ tự nhiên. Mặc dù cách biểu diễn này khá tự nhiên và không đòi hỏi người viết thuật toán phải biết nhiều quy ước khác, nhưng nó không thể hiện rõ tính cấu trúc của thuật toán nên không thuận lợi cho việc thiết kế và cài đặt những thuật toán phức tạp. Hơn nữa trong nhiều trường hợp việc biểu diễn thuật toán bằng ngôn ngữ tự nhiên tỏ ra dài dòng và dẽ gây ra sự nhầm lẫn đối với người đọc. Còn việc sử dụng lưu đồ sẽ rất cồng kềnh đối với các thuật toán phức tạp => chúng ta cần chọn phương thức thích hợp để biểu diễn thuật toán. Mã giả: Ðể biểu diễn thuật toán một cách hiệu quả, người ta thường dùng mã giả (pseudocode). Theo cách này, ta sẽ sử dụng một số qui ước của một ngôn ngữ lập trình, chẳng hạn là ngôn ngữ lập trình PASCAL, nhất là các cấu trúc điều khiển của ngôn ngữ lập trình như các cấu trúc chọn, các cấu trúc lặp. Trong mã giả ta còn sử dụng cả các ký hiệu toán học, các biến, và đôi khi cả cấu trúc kiểu thủ tục. Cấu trúc thuật toán kiểu thủ tục thường được sử dụng để trình bày các thuật toán đệ qui hay các thuật toán quá phức tạp cần phải được trình bày thành nhiều cấp độ. Cùng với việc sử dụng các biến, trong thuật toán rất thường gặp một phát biểu hành động đặt (hay gán) một giá trị cho một biến. Ví du:?hành động tăng biến i lên 1 đơn vị có thể được viết như sau: i := i + 1 Các cấu thường được sử dụng trong mã giả dựa theo ngôn ngữ lập trình C gồm: 1/ Cấu trúc chọn: 6 if (điều kiện) then (hành động) if (điều kiện) then (hành động) else (hành động) 2/ Cấu trúc lặp: while (điều kiện) do (hành động) 3/ Cấu trúc nhảy goto. Ngoài ra người ta còn sử dụng lệnh ngắt vòng lặp break. Dưới đây là các thuật toán được biểu diễn bằng mã giả (sử dụng các cấu trúc điều khiển của ngôn ngữ lập trình PASCAL). Trước khi viết các bước thực hiện thuật toán ta thường ghi rõ những gì được cho trước (phần nhập) và kết quả cần đạt được (phần xuất). Thuật toán tìm phần tử lớn nhất trong một dãy hữu hạn các số nguyên: Nhập: dãy số a 1 , a 2 , . . ., a n Xuất: max là giá trị lớn nhất trong dãy số đã cho trong input. Thuật toán: 1. max := a 1 2. for i := 2 to n do if max < a 1 then max := a 1 3. max là giá trị lớn nhất trong dãy số. Thuật toán giải phương trình bậc hai ax 2 + bx + c = 0 (a ≠ 0): 7 Nhập : 3 hệ số a, b, c Ðiều kiện : a ≠ 0 Xuất : nghiệm của phương trình Thuật toán: 1. delta := b 2 - 4*a*c 2. if delta > 0 then begin x 1 := (-b - sqrt(delta)) / (2*a); x 2 := (-b+sqrt(delta)) / (2*a); Xuất kết quả: phương trình có hai nghiệm là x 1 và x 2 ; end 3. esle if delta = 0 then Xuất kết quả: phương trình có nghiệm kép là -b / (2*a) 4. else { trường hợp delta < 0} Xuất kết quả: phương trình vô nghiệm; (Trong thuật toán này, ký hiệu sqrt(delta) dùng để chỉ căn bậc hai dương của delta) 1.1.3 Các tính chất của thuật toán Thuật toán có vai trò rất quan trọng trong khoa học máy tính. Ðể có thể lập trình giải bài toán trên máy tính, ta cần có một thuật toán bảo đảm những tính chất nhất định. Khi mô tả một thuật toán chúng ta cần chú ý đến các tính chất sau đây: 8 Nhập (input): Các thuật giải có các giá trị đầu vào (input values) từ một tập hợp nhất định nào đó. Xuất (output): Từ mỗi tập hợp các giá trị được nhập một thuật toán thường tạo ra những giá trị kết quả (output values) thuộc một tập hợp nhất định nào đó thể hiện lời giải cho bài toán. Tính xác định (definiteness): Các bước trong thuật toán phải chính xác rõ ràng. Tính hữu hạn (finiteness): Thuật toán phải cho ra lời giải (hay kết quả) sau một số hữu hạn bước. Tính hiệu quả (về thời gian): Thuật toán cần phải được thực hiện một cách chính xác và trong một khoảng thời gian cho phép. Tính tổng quát. Thuật toán phải áp dụng được cho tất cả các bài toán có dạng như mong muốn, chứ không phải chỉ áp dụng được cho một số trường hợp đặc biệt nào đó. Tính đúng: Thuật toán phải cho kết quả như mong muốn. Trong các tính chất trên, 3 tính chất cơ bản của thuật toán đòi hỏi phải được thỏa mãn là tính xác định, tính hữu hạn và tính đúng. Các thuật toán trong hai ví dụ 1 và 2 được trình bày ở trên đều thỏa mãn các tính chất nêu trên. Dưới đây chúng ta xét thêm một số ví dụ về các thuật toán. Ví dụ : Thuật toán tìm kiếm tuyến tính (Linear Search) 9 Bài toán được đặt ra là xác định xem một phần tử x có trong một dãy a 1 , a 2 , . . ., a n hay không? Lời giải của bài toán này là giá trị chỉ vị trí (hay chỉ số) của một phần tử trong dãy bằng phần tử x, hoặc là 0 nếu x không có trong dãy. Một thuật toán đơn giản để giải bài toán này là thuật toán tìm kiếm tuyến tính (hay còn gọi là tìm kiếm tuần tự). Thuật toán bắt đầu bằng việc so sánh x với a 1 , và nếu x = a 1 thì lời giải là vị trí của a 1 (tức là 1). Khi x ≠ a 1 , ta tiếp tục so sánh x với a 2 . Nếu x = a 2 , thì lời giải là vị trí của a 2 (tức là 2). Khi x ≠ a 2 , ta tiếp tục so sánh x với a 3 . Cứ tiếp tục quá trình này: lần lượt so sánh x với từng phần tử của dãy cho tới khi gặp một phần tử bằng x hoặc là cho tới khi đạt đến cuối dãy. Lời giải là vị trí của phần tử trong dãy bằng x; hoặc là 0 nếu không có phần tử nào trong dãy bằng x. Thuật toán này có thể được viết dưới dạng mã giả như dưới đây. Thuật toán: Tìm kiếm tuyến tính (hay tuần tự) Nhập : dãy a 1 , a 2 , . . ., a n , và phần tử x. Xuất : vị trí của x trong dãy (chỉ số của phần tử trong dãy bằng với x), hoặc 0 Thuật toán: 1. i := 1 2. while ( i ≤ n and x ≠ a i ) do i := i + 1; 3. if i ≤ n then location := i else location := 0 4. location là một lời giải (ví trí cần tìm). Trong thuật toán nầy từ "location" là một biến nguyên. 10 [...]... xếp Counter[k] phần tử c a vào danh sách a[1 n] 22 Do thời gian c hạn nên trong bài báo c o này em chỉ đi xâu vào tìm hiểu hai thuật toán đó là thuật toán sắp xếp chọn và thuật toán sắp xếp chèn 2.2 Thuật toán sắp xếp chèn Sắp xếp chèn (insertion sort) là một thuật toán sắp xếp rất hiệu quả với c c danh sách nhỏ Nó lần lượt lấy c c phần tử c a danh sách chèn vào vị trí thích hợp trong một danh sách... trình dịch C nổi tiếng như là: Turbo C, Borland C của Borland Inc.MSC, VC c a Microsoft Corp.Lattice C của Lattice Sự phát triển c a ngôn ngữ lập trình trong những năm 80 đã đưa đến phong c ch lập trình hướng đối tượng mà một trong những ngôn ngữ rất đư c ưa dùng là C+ +, bổ sung mới c c yếu tố hướng đối tượng vào ngôn ngữ C 1.2.2 Đ c điểm c a ngôn ngữ lập trình C Ngôn ngữ C có những đ c điểm c bản sau:... một thuật toán sắp xếp rất hiệu quả với c c danh sách nhỏ Nó lần lượt lấy c c phần tử c a danh sách chèn vào vị trí thích hợp trong một danh sách mới đã đư c sắp • Sắp xếp chọn: Sắp xếp chọn (select sort) là phương pháp sắp xếp bằng c ch chọn phần tử bé nhất xếp vào vị trí thứ nhất, tương tự với c c phần tử nhỏ thứ hai, thứ ba, • Sắp xếp trộn: Sắp xếp trộn (merge sort) c ng với sắp xếp nhanh là hai thuật. .. thể sử dụng đư c nhiều lần trong chương trình hay chương trình kh c 1.2.3.2Như c điểm: - Một số ch c năng kh c mà C không c (hay c n thiếu) nhưng c thể tìm thấy ở c c ngôn ngữ kh c bao gồm: • • • • An toàn kiểu Tự động Thu dọn r c C c lớp hay c c đối tượng c ng với c c ứng xử c a chúng C c hàm lồng nhau - C pháp c a C thu c loại là và khó h c - Một số kí hiệu c a C có nhiều nghĩa kh c nhau, ví dụ... 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 18 19 CHƯƠNG 2: TÌM HIỂU THUẬT TOÁN SẮP XẾP CHÈN VÀ SẮP XẾP CHỌN 2.1 Giới thiệu thuật toán sắp xếp 2.1.1 Định nghĩa thuật toán sắp xếp Thuật toán là một tập hợp hữu hạn c a c c chỉ thị hay phương c ch đư c định nghĩa rõ ràng cho vi c hoàn tất một số sự vi c từ một trạng thái ban đầu cho trư c; khi c c chỉ... giữa c c phần tử bằng nhau không bị thay đổi • Sắp xếp so sánh: Một thuật toán sắp xếp đư c gọi là sắp xếp so sánh nếu trong quá trình th c hiện thuật toán ta tiến hành so sánh c c khoá và đổi chỗ c c phần tử cho nhau Đa số c c thuật toán sắp xếp dưới đây là sắp xếp so sánh, riêng sắp xếp đếm phân phối không phải là sắp xếp so sánh 2.1.3 Một số thuật toán sắp xếp c bản • Sắp xếp nổi bọt: Sắp xếp nổi... đư c xuất bản và đư c phổ biến rộng rãi - Năm 1983, một tiểu ban c a viện tiêu chuẩn qu c gia Mỹ (ANSI đư c thành lập nhằm đề xuất ra một chuẩn cho ngôn ngữ 12 - Năm 1988, chuẩn ANSI C chính th c đư c ban hành Chuẩn này bao gồm c c mô tả về ngôn ngữ theo K&R và quy định c c thư viện chuẩn c a ngôn ngữ C, nhờ đó tăng tính khả chuyển c a ngôn ngữ viết bằng C Trong thế giới PC, c c c hệ chương trình dịch... Tính c đọng (compact): C chỉ c 32 từ khóa chuẩn và 40 toán tử chuẩn, nhưng hầu hết đều đư c biểu diễn bằng những chuỗi ký tự ngắn gọn - Tính c u tr c (structured): C có một tập hợp những chỉ thị c a lập trình như c u tr c lựa chọn, lặp… Từ đó c c chương trình viết bằng C đư c tổ ch c rõ ràng, dễ hiểu - Tính tương thích (compatible): C có bộ tiền xử lý và một thư viện chuẩn vô c ng phong phú nên khi chuyển... đống con lại phân chia theo chữ số hàng ch c, cuối c ng trong mỗi đống c c ng chữ số hàng trăm và hàng ch c, sắp xếp theo thứ tự c a chữ số hàng đơn vị Trong máy tính, đương nhiên vi c sắp xếp theo c số nhị phân (c số 2) ho c cơ số là lũy thừa c a 2 là thuận lợi nhất Trong trường hợp c số 2, vi c phân hoạch tương tự như phân hoạch trong Quick Sort, chỉ kh c ở chỗ c ch chọn phần tử chốtmn • Sắp xếp. .. sắp xếp nhanh và sắp xếp trộn là trong sắp xếp trộn vi c x c định thứ tự đư c x c định khi "trộn", t c là trong khâu tổng hợp lời giải sau khi c c bài toán con đã đư c giải, c n sắp xếp nhanh đã quan tâm đến thứ tự c c phần tử khi phân chia một danh sách thành hai danh sách con • Sắp xếp theo c số: Sắp xếp theo c số (radix sort) dựa trên tính chất "số" c a c c khóa Trong giải thuật sắp xếp theo c . H C CÔNG NGHỆ THÔNG TIN VÀ 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 VỀ NGÔN NGỮ LẬP TRÌNH C VÀ ỨNG DỤNG NGÔN NGỮ LẬP TRÌNH C CÀI ĐẶT THUẬT TOÁN SẮP XẾP CHỌN. hai thuật toán là: thuật toán sắp xếp chèn, sắp xếp chọn và ứng dụng ngôn ngữ lập trình C để c i đặt hai thuật toán trên. Em xin đư c gửi lời c m ơn trân thành đến c Th.s Đoàn Thị Bích Ng c đã giúp. giả (pseudocode). Theo c ch này, ta sẽ sử dụng một số qui ư c của một ngôn ngữ lập trình, chẳng hạn là ngôn ngữ lập trình PASCAL, nhất là c c cấu tr c điều khiển c a ngôn ngữ lập trình như c c cấu trúc