Trong thực tế cuộc sống, chúng ta gặp nhiều bài toán thống kê, trong đó chúng ta cần sắp xếp thứ hạng của nhiều tổng thể khi quan sát và thu thập số liệu của một số tin tức liên quan. Thuật toán sắp xếp xuất hiện trong bất kỳ lĩnh vực nào của tin học, từ những ứng dụng ẩn bên trong của hệ điều hành như bài toán điều khiển quá trình, bài toán lập lịch cho CPU, bài toán quản lý bộ nhớ… cho đến những ứng dụng thông thường như sắp xếp dãy các từ, các câu, các bản ghi theo thứ tự nào đó.
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM ĐÀ NẴNG TIỂU LUẬN “THUẬT TOÁN SẮP XẾP VÀ ỨNG DỤNG CỦA NĨ” Nhóm Tác Giả: TRẦN VĂN SÁNG ĐẶNG BÁ LỘC TRƯƠNG LÊ MINH HẢI NGUYỄN PHÚC HƯNG TRƯƠNG HỮU HÒA ĐÀ NẴNG Tháng 2020 MỤC LỤC DANH MỤC HÌNH DANH MỤC BẢNG A LÝ THUYẾT VỀ NGHIÊN CỨU KHOA HỌC A.1 Giới thiệu PPNCKH A.1.1 Nghiên cứu Khoa học (NCKH) gì? Là trình áp dụng ý tưởng, nguyên lý phương pháp khoa học để tìm kiến thức nhằm mơ tả, giải thích hay dự báo vật, tượng giới khách quan A.1.2 Nghiên cứu Khoa học (NCKH) cần người nào? - Có kiến thức lĩnh vực nghiên cứu - Có đam mê nghiên cứu, ham thích tìm tịi, khám phá - Có khách quan trung thực khoa học (đạo đức khoa học) - Biết cách làm việc độc lập, tập thể có phương pháp - Liên tục rèn luyện lực nghiên cứu từ lúc sinh viên A.1.3 Ai người nghiên cứu Khoa học? - Các nhà nghiên cứu nhiều lĩnh vực khác viện trung tâm nghiên cứu - Các giáo sư, giảng viên trường Đại học- Cao đẳng Trung học chuyên nghiệp - Các chuyên gia quan quản lí nhà nước - Các công ty, viện nghiên cứu tư nhân - Các sinh viên ham thích NCKH trường Đại Học A.1.4 Các hình thức tổ chức nghiên cứu? A.1.1.1 Khái niệm Tổ chức nghiên cứu: • Tổ chức cơng việc thực nghiên cứu chung; • Tổ chức cơng việc thực nghiên cứu cá nhân; • Quản lý, điều hòa, phối hợp hoạt động thực nghiên cứu • Xây dựng dự án, đề tài NCKH tìm kiếm quan, cá nhân tài trợ • Làm việc với quan quản lý, tài trợ A.1.1.2 Khái niệm loại hình nghiên cứu: A.1.1.2.1 Đề tài nghiên cứu • Là hình thức tổ chức NCKH; có nhiệm vụ nghiên cứu cá nhân hay nhóm người thực • Nhằm vào: trả lời câu hỏi mang tính học thuật thực tiễn, làm hoàn thiện phong phú thêm tri thức khoa học; đưa âu trả lời để giải thực tiễn • Đề tài nghiên cứu khoa học nghiên cứu cụ thể có mục tiêu, nội dung, phương pháp rõ ràng nhằm tạo kết đáp ứng yêu cầu thực tiễn sản xuất làm luận xây dựng sách hay sở cho nghiên cứu Ví dụ Đề tài nghiên cứu: Tình trạng nghèo đói Việt Nam: thực trạng giải pháp Tìm hiểu khó khăn hoạt động xuất nhập lương thực – thực phẩm Việt Nam gia nhập WTO • Tìm hiểu nhu cầu chọn lựa khách hàng sản phẩm sữa • • A.1.1.1.1 Dự án khoa học • Là loại đề tài thực nhằm mục đích ứng dụng, có xác định cụ thể hiệu kinh tế - xã hội • Dự án có tính ứng dụng cao, có ràng buộc thời gian nguồn lực • Dự án sản xuất thử nghiệm hoạt động ứng dụng kết triển khai thực nghiệm để sản xuất thử quy mơ nhỏ nhằm hồn thiện cơng nghệ mới, sản phẩm trước đưa vào sản xuất đời sống Ví dụ Dự án khoa học: • • Dự án cải thiện cơng nghệ ni trồng nấm Linh Chi Dự án Xây dựng thí điểm mơ hình phát triển nơng thơn A.1.1.1.2 Chương trình khoa học • Là tập hợp đề tài dự án có mục đích xác định • Các đề tài dự án trực thuộc chương trình mang tính độc lập cách tương đối • Các nội dung chương trình có tính đồng bộ, hỗ trợ lẫn • Một nhóm dự án, đề tài quản lý cách phối hợp nhằm đạt số mục tiêu chung (mục tiêu chương trình) định trước Ví dụ chương trình khoa học: Nghiên cứu, phát triển ứng dụng công nghệ thơng tin truyền thơng” M số: KC.01/06-10 • Những vấn đề phát triển kinh tế Việt Nam đến năm • A.1.1.1.3 Đề án khoa học • Là loại văn kiện xây dựng để trình cấp quản lý cao gửi cho quan tài trợ • Nhằm đề xuất xin thực cơng việc đó: thành lập tổ chức, tài trợ cho hoạt động… • Các chương trình, đề tài, dự án đề xuất đề án A.2 CÁC THAO TÁC CƠ BẢN CỦA NGHIÊN CỨU KHOA HỌC • Thiết lập kiện • Xây dựng khái niệm • Xây dựng kiểm chứn giả thiết nghiên cứu A.1.5 Thiết lập kiện Thiết lập kiện phần đối tượng nghiên cứu, bóc tách từ đối tượng nghiên cứu để quan sát • • • • • • • Sự kiện tồn tự nhiên, đời sống xã hội Người nghiên cứu thiết lập theo trường hợp sau đây: Thiết lập kiện Chọn kiện tồn tự nhiên xã hội để quan sát Người nghiên cứu phải chủ động tạo kiện nhờ thực nghiệm Việc chọn kiện vốn tồn thực nghiệm suy cho để quan sát Quan sát đóng vai trị vơ quan trọng NCKH vì: • • • • Quan Quan Quan Quan sát sát sát sát để để để để phát vấn đề nghiên cứu xây dựng khái niệm đặt giả thuyết kiểm chứng giả thuyết A.1.6 Phát vấn đề nghiên cứu • Vấn đề nghiên cứu gì? • Là điều chưa biết chưa biết thấu đáo chất tượng, cần làm rõ trình nghiên cứu • Vì vậy, vấn đề nghiên cứu câu hỏi cần giải đáp nghiên cứu • Khi phát vấn đề nghiên cứu, người nghiên cứu tất yếu sinh hàng loạt ý tưởng giải vấn đề • Ý tưởng gọi ý tưởng nghiên cứu (ý tưởng khoa học) Đây sở ban đầu đến giải nghiên cứu A.1.7 Ý tưởng nghiên cứu A.2.1.1 Ý tưởng: • Là giai đoạn tiền - giả thuyết: Là phán đoán trực cảm chất vật tượng • Ý tưởng nghiên cứu xuất theo cảm nhận, chưa tổng kết đầy đủ mặt phương pháp luận nhận thức A.1.1.1 Một số loại ý tưởng nghiên cứu: • Ý tưởng qui luật: Những phán đoán trực cảm mơ tả giải thích vật tượng, qui Ý tưởng giải pháp: Đây ý tưởng biện pháp tác động vào vật tượng • Ý tưởng hình mẫu: Đây ý tưởng phát triển từ ý tưởng giải pháp với hình dung đến mơ hình cụ thể với qui mơ hình mẫu với tham số đủ mang tính khả thi (về kỹ thuật) vật tượng hình thành kết nghiên cứu A.1.1.2 Con đường hình thành ý tưởng nghiên cứu • Phát kẽ hở khoa học • Nhận dạng bất đồng tranh luận khoa học • Nghĩ ngược lại quan niệm thơng thường • Sự nhận dạng vướng mắc hoạt động thực tế • Sự kêu ca phàn nàn người không am hiểu • Những ý tưởng khoa học xuất A.1.1.2.1 Xây dựng khái niệm • Là cơng việc người nghiên cứu nghiên cứu nào, người nghiên cứu cần phải chuẫn xác hoá khái niệm vốn sử dụng lĩnh vực khác • Thống hố khái niệm hiểu khác lĩnh vực khác • Xây dựng khái niệm hoàn toàn để đáp ứng cho đòi hỏi nhiệm vụ nghiên cứu A.1.1.2.2 Khái niệm gì? Là hình thức tư duy, có phương án thuộc tính chung, chủ yếu, chất vật A.1.1.2.3 Cấu trúc khái niệm: • Gồm phận hợp thành: nội hàm ngoại diện: • Nội hàm khái niệm gì? Là hiểu biết tồn thể thuộc tính chất phản ánh khái niệm • Ngoại diện khái niệm gì? Là tồn thể cá thể có chứa thuộc tính chất phản ánh khái niệm A.1.1.2.4 Xây dựng kiểm chứng giả thuyết nghiên cứu Khái niệm chung vai trị giả thuyết nghiên cứu • • • • • Giả thuyết khởi điểm nghiên cứu khoa học, khơng có khoa học mà lại khơng có giả thuyết Có giả thuyết sai, khơng có giả thuyết (Mendeleev) Tiêu chí xem xét giả thuyết nghiên cứu: Phải xây dựng sở kiện quan sát Không trái với lý thuyết xác nhận tính đắn mặt khoa học Phải kiểm chứng lý thuyết thực nghiệm Nội dung khoa học giả thuyết nghiên cứu Một giả thuyết nghiên cứu xây dựng nhằm: • • • • Phát quy luật Mơ tả giải thích ngun nhân vận động vật tượng Sáng tạo nguyên lý giải pháp phục vụ cho hoạt động xã hội khác người Tuỳ thuộc mục tiêu nghiên cứu sản phẩm thu nhận sau nghiên cứu sản phẩm thu nhận sau nghiên cứu ta chia làm loại hình nghiên cứu khác nhau: Nghiên cứu Nghiên cứu ứng dụng Nghiên cứu triển khai A.1.1.3 Nội dung khoa học giả thuyết nghiên cứu Như để đặt giả thuyết phù hợp, người nghiên cứu cần nhận dạng đắn loại hình nghiên cứu giả thuyết tương ứng A.1.1.3.1 Nghiên cứu bản: giả thuyết quy luật Giả thuyết quy luật phán đoán qui luật vận động vật, gắn liền với chức mơ tả, giải thích, dự báo A.1.1.3.2 Nghiên cứu ứng dụng: Gỉa thuyết giải pháp Có thể giải pháp công nghệ, vật liệu, tổ chức, quản lý gắn liền với chức sáng tạo A.1.1.3.3 Nghiên cứu triển khai: Gỉa thuyết hình mẫu • Khi xem xét loại hình giả thuyết nghiên cứu, người nghiên cứu cần ý: • Trong đề tài nghiên cứu chứa đựng loại hình nghiên cứu, có hai ba loại hình • Trong loại hình nghiên cứu chứa đựng giả thuyết nghiên cứu A.2 Quy Trình NCKH Quá trình nghiên cứu: trình lặp lặp lại quy trình bước sau: Các bước quy trình có mối liên hệ chặt chẽ với A.1.8 Bước 1: Xác định vấn đề: • loại vấn đề nghiên cứu: NC tình trạng thực tế hay nghiên cứu mối liên hệ biến số • Phải xác định lĩnh vực nghiên cứu, thu hẹp lại thành vấn đề nghiên cứu cụ thể • • Phải am hiểu vấn đề nghiên cứu khái niệm liên quan Sự kết dính bước bước 2: tìm hiểu khái niệm, lý thuyết nghiên cứu trước vấn đề tương tự để làm rõ thêm vấn đề nghiên cứu A.1.9 Bước 2: Xác định vấn đề nghiên cứu định: • Loại số liệu cần thu thập • Những mối liên hệ cần phân tích • Loại kỹ thuật phân tích liệu thích hợp hình thức báo cáo cuối Ví dụ: • • • • • SV sử dụng căn-tin nào? SV nhận xét chất lượng dịch vụ căn-tin? SV nhận xét giá căn-tin? SV thích hay khơng thích ăn uống ởcăn-tin? SV có lựa chọn khác khơng? Tìm hiểu đánh giá SV chất lượng giá dịch vụ với tin trường A.2.1.1 Lưu ý lựa chọn vấn đề nghiên cứu: • Bạn cần phải thích thú với vấn đề • Vấn đề phải có ý nghĩa thực tiễn phải có đóng góp, đem lại hiểu biết • Vấn đề bạn phải cụ thể, khơng q rộng • Cần phải bảo đảm thu thập thơng tin, liệu cần thiết để tiến hành đề tài • Phải bảo đảm rút kết luận học từ nghiên cứu • Bạn phải trình bày vấn đề cách rõ ràng, xác ngắn gọn A.1.10 Bước 3: Tìm hiểu khái niệm, lý thuyết nghiên cứu liên quan: • Tóm tắt lại tất lý thuyết nghiên cứu trước có liên quan • Chỉ sử dụng lý thuyết thật liên quan phù hợp giúp giải vấn đề nghiên cứu • Đánh giá rút học kinh nghiệm phương pháp nghiên cứu từ nghiên cứu trước • Cần biết ngoại ngữ để tăng khả tổng quan tài liệu A.1.11 Bước 4: Xây dựng giả thiết nghiên cứu: • Một giả định xây dựng sở vấn đề nghiên cứu lý thuyết liên quan Thơng qua nghiên cứu kiểm định tính hợp lý hệ • Giúp xác định tiêu điểm vấn đề nghiên cứu • Mục đích q trình nghiên cứu kiểm định tính hợp lý giả thiết • A.1.1.1 Vai trị Giả thiết nghiên cứu gì? • Hướng dẫn, định hướng nghiên cứu • Xác minh kiện phù hợp, không phù hợp với nghiên cứu • Đề xuất dạng nghiên cứu thích hợp • Cung cấp khung sườn để định kết luận kết nghiên cứu Giả thiết nghiên cứu, ví dụ: • • Chất lượng dịch vụ căn-tin tốt Giá dịch vụ căn-tin phù hợp với khả chi tiêu SV A.1.1.2 Phân loại Giả thiết nghiên cứu: • Giả thiết mơ tả (Descriptive Hypotheses) phát biểu tồn tại, kích thước, dạng hình, phân phối biến • Giả thiết tương quan (Correlational hypotheses) phát biểu số biến xuất với theo cách khơng có nghĩa biến ngun nhân biến • Giả thiết giải thích (ngun nhân) (Explanatory causal hypotheses): ám diện thay đổi biến gây dẫn đến thay đổi biến khác A.1.1.3 Làm xây dựng Giả thiết nghiên cứu? • Thảo luận với bạn bè, đồng nghiệp chuyên gia lĩnh vực nghiên cứu vấn đề nghiên cứu • Khảo sát thơng tin, liệu sẵn có vấn đề nghiên cứu • Khảo sát nghiên cứu trước nghiên cứu tương tự • Quan sát phán đốn riêng • Lấy ý kiến chuyên gia lĩnh vực nghiên cứu A.1.1.4 Như Giả thiết mạnh? Một giả thiết mạnh thỏa mãn đầy đủ ba điều kiện: • • • Phù hợp với mục tiêu Có thể kiểm định Tốt giả thiết cạnh tranh khác A.1.12 Bước 5: Xây dựng đề cương nghiên cứu Như Đề cương nghiên cứu? • • • Thực chất kế hoạch thực nghiên cứu Có thành phần bắt buộc Là tảng để xem xét, đánh giá phê duyệt nghiên cứu Đề cương nghiên cứu trình bày gì? • • • • • Vấn đề nghiên cứu Các lý thuyết liên quan Các giả thuyết nghiên cứu Phương pháp nghiên cứu Kế hoạch giải vấn đề nghiên cứu Các nội dung chi tiết Đề cương nghiên cứu? Đặt vấn đề Những khái niệm, lý thuyết nghiên cứu liênquan Giả thuyết nghiên cứu Khung phân tích: từ khái niệm lý thuyết liên quan, tìm biến số thực tế tương ứng để kiểm định giảthuyết • Phương pháp nghiên cứu • • • • A.1.13 Bước 6: Thu thập liệu Dữ liệu: thứ cấp sơ cấp Dữ liệu sơ cấp: số liệu thu thập trực tiếp từ đối tượng nghiên cứu Thu thập trực tiếp từ đối tượng nghiên cứu cách: o Tự quan sát tượng o Phỏng vấn lấy ý kiến cá nhân o Phỏng vấn theo bảng câu hỏi (phỏng vấn qua điện thoại; qua thư; vấn trực tiếp) o Là quy trình phức tạp tốn địi hỏi phải có chuẩn bị cẩn thận • Dữ liệu thứ cấp: số liệu tổng hợp từ số liệu sơ cấp Tìm nguồn cung cấp thích hợp (niên giám thống kê, số liệu tổng hợp ngành; báo cáo nghiên cứu, v.v.) • A.1.14 Bước 7: Phân tích liệu: • Tùy vào loại liệu giả thuyết nghiên cứu mà bạn phải lựa chọn kỹ thuật phân tích liệu thích hợp • Phân tích định tính • Phân tích mơ tả • Phân tích định lượng • Địi hỏi kỹ phân tích thống kê kinh tế lượng 10 người dùng, Facebook đánh giá thể loại post mà fan page hiệu quả, qua ảnh hưởng đến tổng thể thuật toán Do vậy, thể loại có lượng Reach cao, khơng riêng Photos hay Text A.1.28.1.4 Time-Decay Cái đơn giản Facebook ưu tiên hiển thị thông tin mới, thông tin điểm số Time-Decay cao, ngược lại, thơng tin cũ số Time-Decay thấp Ngồi ra, theo tìm hiểu mình, thuật tốn hiển thị news feed chia làm bốn yếu tố chính, để rõ ràng hơn, xin chia yếu tố vào nhóm khác : (các yếu tố đánh theo số thứ tự 1,2,3,4) A.1.28.1.5 Tương tác cá nhân Tương tác người với post Facebook khác Hình 22: Minh họa cho Tương tác cá nhân (photo, status, link, video) Nếu bạn thường xuyên tương tác với người bạn fan page đó, có khả bạn thường xun nhìn thấy viết họ A.1.28.1.6 Tương tác bạn với dạng viết Nếu bạn thường xuyên tương tác với loại viết, có khả Hình 23: Minh họa cho tương tác viết bạn thường xun nhìn thấy loại viết 40 A.1.28.1.7 Tương tác hệ thống Tương tác nhóm người với viết cụ thể Hình 24: Minh họa cho tương tác hệ thống A.1.28.1.8 post Phản ứng người dùng nhìn thấy Hình 25: Minh họa cho phản ứng người dùng Nếu có nhiều người tương tác với viết, có khả bạn thấy viết A.1.28.1.9 Số lượng khiếu nại, báo cáo tiêu cực Nếu viết bạn bị Facebook nhận phản hồi hay khiếu nại, Hình 26: Minh họa cho khiếu nại khả bạn khả nhìn thấy viết A.1.28.2 Ứng dụng thuật tốn xếp Google Sheet Dữ liệu kiểm soát giới Và thông thường, phải tiếp xúc nhiều với Điều có nghĩa thử thách để hiểu chúng tầm tay Bảng tính cách hay để phân tích liệu theo cấu trúc chúng dễ dàng sử dụng Nhưng nhiều liệu lớn để dễ dàng nắm Bạn cần phải tìm hiểu chia nhỏ liệu Trong hướng dẫn này, bạn học cáp áp dụng lọc Google Sheets để giới hạn liệu bạn nhìnthấy Sau đó, bạn học bí 41 mật việc sử dụng chức xếp dữliệu Google Sheets theo trật tự cần hiển thị A.1.28.2.1 Sắp xếp Google Sheets Việc xếp liệu Sheets cách thay đổi thứ tự liệu việc xuất bảng tính bạn Khi nghĩ việc xếp, nghĩ hai yếu tố: Cột liệu xếp dựa nó? Ví dụ, bạn muốn xếp danh sách bán hàng theo tổng số tiền bán hàng • Dữ liệu xếp nào?Ví dụ: Dữ liệu bán hàng phải xếp từ lớn đến nhỏ • Một chìa khóa để xếp đảm bảo tồn bảng xếp lại với Thông thường, dịng liệu dùng cho "hồ sơ", điểm liệu Mỗi hàng chứa liệu cột có thuộc tính khác cách để mơ tả liệu Ví dụ, dịng bảng tính bạn hiển thị cho cách bán hàng bạn loại khách hàng cửa hàng trực tuyến bạn Đồng thời, cột (thuộc tính) giữ chi tiết quan trọng việc bán, chẳng hạn thời gian thực hiện, địa khách hàng tổng số tiền mua bán Hình 27:Ví dụ hiển thị cho khách hàng Dữ liệu ví dụ kèm hướng dẫn này, hàng "hồ sơ" nhân viên tuyển dụng cột có thuộc tính mơ tả ứng cử viên Khi bạn xếp liệu, điều quan trọng chúng xếp với Nếu bạn xếp cột có chứa số lượng bán, bạn gặp phải tình trạng kết nối liệu bạn! Số tiền bán cho khách hàng sai, chẳng hạn 42 A.1.28.2.2 Cách xếp liệu Google Sheets Một tác vụ xếp phổ biến Google Sheets xếp liệu từ A-Z Nó làm cho đọc liệu dễ dàng đơn giản hóa việc tìm kiếm hàng cụ thể mà bạn tìm kiếm Trước tơi bắt đầu việc xếp, bước luôn đánh dấu toàn bảng Điều giảm thiểu hội vơ tình xếp cột sai xếp phần liệu Một bạn thiết lập toàn liệu đánh dấu, đến trình đơn Data > Sort Range bạn thấy hình Ngay bạn có bảng liệu làm sáng, tới Data > Sort Hình 28: Minh họa cho thiết lập liệu đánh dấu Range để bắt đầu xếp liệu bạn cách sử dụng công cụ Sheets Các tùy chọn sẵn để xếp liệu từ A-Z Z-A giúp dễ dàng việc xếp Sheets Trong ảnh chụp hình đây, bạn thấy ví dụ điển hình cách để áp dụng việc xếp Chỉ đơn giản chọn cột mà bạn muốn áp dụng xếp 43 Đồng thời, chắn rằng, bạn xếp "theo hướng" mà bạn muốn Đối với liệu dạng text, bạn xếp theo thứ tự Hình 29: Minh họa cho thứ tự xếp alphabet (A-Z) ngược lại (Z-A.) Chọn cột mà bạn muốn xếp dựa liệu bạn, hướng mà bạn muốn xếp liệu, chẳng hạn theo thứ tự ABC ngược lại Một bạn làm điều đó, bạn tìm thấy liệu bạn xếp, an toàn hợp lý! Chú ý hình mà xếp liệu dựa tên công ty ứng cử viên làm việc A.1.28.2.3 Google Sheets xếp dựa hai nguyên tắc Với liệu chọn, quay lại trình đơn Data > Sort Range Lần này, click vào Add another sort column để thêm tiêu chí thứ hai cho liệu phân loại Bây giờ, bạn xếp dựa nhiều quy tắc Trong menu Hãy ý theo nguyên tắc "sort by" sau quy tắc thứ hai "then by" Trong ví dụ đây, tơi thiết lập trình đơn xếp dựa sở thích theo thứ tự ABC tên công ty theo thứ tự ABC Click vào add another sort column để thêm nhiều nguyên tắc xếp liệu bạn Sử dụng cách xếp nhiều cấp độ thật cách đặc biệt cách liệu hiển thị Bạn thêm nhiều nguyên tắc xếp mà bạn muốn theo trật tự 44 Hình 30: Sắp xếp nâng cao A.1.28.2.4 Sử dụng lọc Google Sheets Filters Việc thay đổi trật tự việc xếp trình tự liệu bảng tính, việc lọc liệu làm thay đổi liệu hiển thị bảng tính Hãy tìm hiểu cách áp dụng lọc Google Sheets để giới hạn liệu hiển thị Để bắt đầu thêm lọc, tô sáng liệu bảng liệu Sau đó, tới Data > Create a Filter menu Sheets Bây giờ, bạn bật chức lọc Bạn thấy biểu tượng nhỏ góc, phía bên phải tiêu đề Nhấp vào biểu tượng sau bạn thấy danh sách giá trị cột từ trình đơn xuất bạn thấy hình Click vào biểu tượng cột tiêu đề để chọn theo cách bạn muốn giới hạn liệu Trên cửa sổ pop-up này, đơn giản mở tắt tiêu chí mà bạn muốn liệu hiển thị Khi bạn bấm OK, bảng tính thu hẹp, hiển thị liệu phù hợp với quy tắc lọc Google Sheets Giống việc xếp, bạn tạo lọc theo nhiều cấp độ Trong ví dụ đây, thêm vào lọc cột Salary Grade A.1.29 Dự kiến kết ứng dụng thuật toán xếp A.1.29.1 Thực nghiệm đánh giá A.1.29.1.1 Cấu hình test • CPU: Intel core i5 8400 2.80 GHz • RAM: 16 GB DDR4 bus 2666 45 • • • VGA: onboard Hệ điều hành Windows 10 Professional Compiler: Visual C++ 2012/2015 Về mặt nội dung, thực nghiệm đạt số kết sau đây: A.1.1.1.1 Kết thử nghiệm: A.1.1.1.1.1 Test case #1 - 10 000 phần tử Bình thường mảng có khoảng vài chục, vài trăm phần tử phê Đằng đến 10 nghìn phần tử, lớn ghê Thật khơng phải vậy, 10.000 nhỏ bé Với n = 10 000, phần tử nằm đoạn [0, 9999] kết quả: Hình 31: Kết quả thử nghiệm Test case #1 - 10 000 phần tử 46 Theo mặc định, liệu ngẫu nhiên chiếm hầu hết trường hợp, Hình 32: Kết quả thử nghiệm ngẫu nhiên Test case #1 - 10 000 phần tử ưu tiên đánh giá theo input ngẫu nhiên Chót bảng khơng khác ngồi người anh em tiếng Interchange Sort, Bubble Sort Selection Sort Nổi tiếng q thơng dụng, dễ cài đặt Tuy nhiên có giá Nếu code cài đặt ngắn, thuật tốn suy nghĩ đơn giản có lẽ chúng thường giải vấn đề đơn giản Nhưng, tất bắt đầu 138 368 700 nano-giây ≈ 0.14 giây mà Chưa đến giây nên cảm giác khơng có khác biệt Ở top 13 chạy nhanh, thuật tốn khơng có khác biệt nhiều, chưa thật đánh giá được, đánh chúng ngang A.1.1.1.1.1 Test case #2 - 100 000 phần tử 47 Hình 33: Kết quả Test case #2 - 100 000 phần tử Trong lần test này, n = 100 000, phần tử nằm đoạn [0, 99999] Vâng, lại xác định rõ top chạy chậm nhất, nhìn thấy rõ ln Với top 17 chạy nhanh khác biệt khơng đáng kể Trong top có Counting Sort Heap Sort chạy nhanh Thuật toán 3-way Quick Sort bị die Khi sort bị lỗi Vì build chế độ release nên khơng xác định rõ lỗi gì, làm biếng debug để biết xác định lỗi q Mình đốn lỗi xảy stack over-flow tràn nhớ (source code em đệ quy nhiều) Chiến sĩ đua phải chia tay 48 Chúng ta chia tay ln chiến sĩ chót bảng chạy chậm: Insertion Sort, Shell Sort, Selection Sort, Bubble Sort, Interchange Sort Cần phải nhường sàn thi đấu lại cho chiến sĩ khác tốt A.1.1.1.1.2 Test case #3 – 000 000 phần tử 100 nghìn phần tử lên triệu phần tử bị… Nhưng không sao, thực tế số triệu nhỏ Theo hiểu ngầm, giá trị phần tử nằm đoạn [0, 999 999] Hình 34: Kết quả Test case #3 – 000 000 phần tử: Top chạy nhanh ngang nhau: anh em nhà Radix Sort em Super Noname Sort Counting Sort bám sát đằng sau Đây đồ thị so sánh: Hình 35 : Đồ thì kết quả với Test case #3 – 000 000 phần tử Tất nhiên, ta ưu tiên xét theo input ngẫu nhiên, với input tăng dần giảm dần tỉ trọng xem xét nhỏ 49 Nhìn vào đồ thị trên, ta rút số nhận xét: • Một số thuật toán chạy cực nhanh liệu xếp sẵn Ví dụ: Tim Sort, Counting Sort • Với input giảm dần, số thuật toán tỏ chậm chạp, ví dụ Merge Sort (std::stable_sort), BlockMerge Sort, Smooth Sort • Một số thuật tốn chạy với input ngẫu nhiên lại nhanh so với input giảm dần/tăng dần Ví dụ Radix Sort, Super Noname Sort Trong test case lần này, khơng có chiến sĩ đi, nhiên sang test case sau ta buộc phải chia tay với vài em A.1.1.1.1.3 Test case #4 – 20 000 000 phần tử Từ triệu lên 20 triệu, khơng đơn giản Mặc dù tỉ lệ gấp lần thật 20 triệu số không nhỏ Nếu xét độ phức tạp thuật tốn triệu bình phương bé nhiều so với 20 triệu bình phương Bảng xếp hạng khơng có ngạc nhiên Chiến sĩ Merge Sort (top-down) bật tô chữ màu cam Khi chạy, Merge Sort (top-down) bị crash (vì stack over-flow, tràn nhớ) Mình phải build lại, test lại kiến trúc x64 Merge Sort (top-down) khơng cịn lỗi Hình 36:Kết quả Test case #4 – 20 000 000 phần tử 50 Top chạy nhanh: anh em nhà Radix Sort, Super Noname Sort, Counting Sort Top chạy nhanh: Quick Sort, Merge Sort (std::stable_sort), Intro Sort (std::sort) Hình 37 : Đồ thị kết quả Test case #4 – 20 000 000 phần tử Như nói test case trước, thuật tốn chạy nhanh liệu xếp Tim Sort Có điều thú vị BlockMerge Sort Smooth Sort input xếp tăng dần thời gian thấp input xếp giảm dần thì… Chúng ta nói lời chia tay với top chót bảng input random, bao gồm Merge Sort (top-down), Noname Sort, Heap Sort Smooth Sort 51 Heap Sort, đánh giá thuật tốn có độ phức tạp ổn định O(nlogn) so với Quick Sort, nhiên thực tế Heap Sort chạy chậm Quick Sort nhiều A.1.1.1.1.4 Test case #5 – 50 000 000 phần tử 50 triệu phần tử, số không nhỏ, đủ để gây khó khăn thuật tốn sort Đây test định thuật toán thật dành chiến thắng Với 50 triệu phần tử số nguyên dương, file input có dung lượng….gần 500 MB Hình 38: Đồ thị so sánh tất cả lần thử nghiệm thuật toán Hình 39: Kết quả Test case #5 – 50 000 000 phần tử Hình 40: Đồ thị so sánh thuật toán 52 sort Test case #5 – 50 000 000 phần tử • • • Quán quân: anh em nhà Radix Sort Á quân: Super Noname Sort Counting Sort Quý quân: Quick Sort Ghi chú: thuật tốn Super Noname Sort có thời gian chạy 1,051,820,407 nano giây, thời gian tính từ lúc sau input đến xử lý xong kết Nếu thật tính thời gian xếp Super Noname Sort 15,860,263 nano giây A.1.1.1.1.5 Test case #6 – test resource với 100 000 000 phần tử Ta xem xét thuật toán sort ngốn tài nguyên Hình 41: kết quả Test case #6 – test resource với 100 000 000 phần tử A.1.1.1.2 Đánh giá kết Thuận lợi: Nếu xét riêng CPU khơng có khác nhiều thuật tốn Khó khăn, hạn chế Thuật tốn Merge Sort thông dụng thường dạng top-down ==> chiếm nhớ nhiều khủng khiếp ngốn đến 53 12500 MB = 12.5 GB RAM, tiếp đến Bst Sort Dễ dàng nhận thấy ta xử lý nhị phân, phải tốn nhiều nhớ cho node Dung lượng RAM mà Bst Sort chiếm khoảng 2.3 GB, cuối Noname Sort Thuật toán bảo đảm chạy với tốc độ O(n log log n) cho trường hợp xấu Nó sử dụng danh sách liên kết nên việc ăn nhiều RAM điều khó hiểu A.1.30 KẾT LUẬN Đề tài giải vấn đề đặt tăng hiệu tính tốn cho thuật tốn xếp Điều thú vị cho ứng dụng toán với Thuật toán xếp thực nghiệm nhiều xử lý khác Không phải thuật toán sort tốt sử dụng, phải tốt hoàn cảnh cụ thể Nếu nhu cầu ta bình thường áp dụng thuật toán sort đủ Xét cho cùng, cần tính tốn nhanh ta sử dụng Quick Sort (theo test mình, Quick Sort nằm top chạy nhanh) A.1.31 TÀI LIỆU THAM KHẢO Knuth, Donald E (1998), Sorting and Searching, The Art of Computer Programming, (2nd ed.), Boston: Addison-Wesley, ISBN 0-201-89685-0 Sedgewick, Robert (1980), "Efficient Sorting by Computer: An Introduction", Computational Probability, New York: Academic Press, pp 101–130, ISBN 0-12-394680-8 Wikipedia, “Từ điển bách khoa toàn thư trực tuyến tiếng Việt”, http://vi.wikipedia.org/wiki/ Wikipedia, “Từ điển bách khoa toàn thư trực tuyến tiếng Anh”, http://en.wikipedia.org/wiki/Main_Page Các tài liệu giảng website: http://csce.unl.edu/~cusack/Teaching/?page=notes Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest and Clifford Stein, “Introduction to Algorithms, Second Edition”, The MIT Press, 2001, 1180 pages 10 Jeff Cogswell, Christopher Diggins, Ryan Stephens, Jonathan Turkanis, “C++ Cookbook”, O’Reilly, November 2005, 592 pages 11 158488360X.Chapman & Hall.CRC.Computer Science Handbook, Second Edition.pdf 54 ... Sheet sau ứng dụng cho thuật toán xếp để sử dụng triệt để tối ưu thuật toán Và đem đến nhìn để người dùng áp dụng thuật tốn xếp vào chương trình, ứng dụng họ cách tối ưu Chạy thử thuật toán nhiều... chèn (Insertion sort) o Sắp xếp bọt (Bubble sort) o So sánh thuật toán xếp Các phương pháp xếp nâng cao Cấu trúc liệu heap Ứng dụng thuật toán xếp o Ứng dụng thuật toán xếp Facebook News Feed... VỀ BÀI TOÁN SẮP XẾP Bài tốn xếp • • • • Sắp Sắp Sắp Các xếp (Internal Sorting) xếp (external sorting): xếp gián tiếp tiêu chuẩn đánh giá thuật toán xếp Các phương pháp xếp • • • • • Sắp xếp chọn