http://vietjack.com/cau-‐truc-‐du-‐lieu-‐va-‐giai-‐thuat/index.jsp Copyright © vietjack.com Giải thuật xếp chọn (Selection Sort) Giải thuật xếp chọn (Selection Sort) ? Giải thuật xếp chọn (Selection Sort) giải thuật đơn giản Giải thuật xếp giải thuật dựa việc so sánh in-place, danh sách chia thành hai phần, phần xếp (sorted list) bên trái phần chưa xếp (unsorted list) bên phải Ban đầu, phần xếp trống phần chưa xếp toàn danh sách ban đầu Phần tử nhỏ lựa chọn từ mảng chưa xếp tráo đổi với phần bên trái phần tử trở thành phần tử mảng xếp Tiến trình tiếp tục toàn phần tử mảng chưa xếp di chuyển sang mảng xếp Giải thuật không phù hợp với tập liệu lớn mà độ phức tạp trường hợp xấu trường hợp trung bình O(n2) với n số phần tử Bạn tìm hiểu khái niệm in-place chương: Một số khái niệm giải thuật xếp Cách giải thuật xếp chọn (Selection Sort) làm việc Dưới hình minh họa cho cách giải thuật xếp chọn làm việc Giả sử có mảng sau: Từ vị trí danh sách xếp, toàn danh sách duyệt cách liên tục Vị trí có giá trị 14, tìm tồn danh sách thấy 10 giá trị nhỏ Do đó, thay 14 với 10 Sau vòng lặp, giá trị 10 thay cho giá trị 14 vị trí danh sách xếp Chúng ta tráo đổi hai giá trị http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/cau-‐truc-‐du-‐lieu-‐va-‐giai-‐thuat/index.jsp Copyright © vietjack.com Tại vị trí thứ hai, giá trị 33, tiếp tục quét phần lại danh sách theo thứ tự phần tử Chúng ta thấy 14 giá trị nhỏ thứ hai danh sách nên xuất vị trí thứ hai Chúng ta tráo đổi hai giá trị Sau hai vòng lặp, hai giá trị nhỏ đặt phần đầu danh sách xếp Tiến trình tương tự áp dụng cho phần lại danh sách Các hình minh họa cho tiến trình http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/cau-‐truc-‐du-‐lieu-‐va-‐giai-‐thuat/index.jsp Copyright © vietjack.com http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/cau-‐truc-‐du-‐lieu-‐va-‐giai-‐thuat/index.jsp Copyright © vietjack.com Tiếp theo theo dõi số khía cạnh khác giải thuật xếp chọn Giải thuật cho xếp chọn (Selection Sort) Bước 1: Thiết lập MIN vị trí Bước 2: Tìm kiếm phần tử nhỏ danh sách Bước 3: Tráo đổi với giá trị vị trí MIN Bước 4: Tăng MIN để trỏ tới phần tử Bước 5: Lặp lại toàn danh sách xếp Giải thuật mẫu cho xếp chọn Bắt đầu giải thuật xếp chọn (Selection Sort) list : mảng phần tử n : kích cỡ mảng for i = tới n - /* thiết lập phần tử min*/ = i /* kiểm tra phần tử có nhỏ khơng */ for j = i+1 tới n if list[j] < list[min] = j; kết thúc if kết thúc for /* tráo đổi phần tử nhỏ với phần tử tại*/ if indexMin != i then tráo đổi list[min] list[i] kết thúc if kết thúc for Kết thúc giải thuật Để theo dõi code đầy đủ giải thuật xếp chọn ngôn ngữ C, mời bạn click chuột vào chương: Giải thuật xếp chọn (Selection Sort) C http://vietjack.com/ Trang chia sẻ các bài học online miễn phí ...http://vietjack.com/cau-‐truc-‐du-‐lieu-‐va- giai- thuat/ index.jsp Copyright... sẻ các bài học online miễn phí http://vietjack.com/cau-‐truc-‐du-‐lieu-‐va- giai- thuat/ index.jsp Copyright... sẻ các bài học online miễn phí http://vietjack.com/cau-‐truc-‐du-‐lieu-‐va- giai- thuat/ index.jsp Copyright