Hướng dẫn và mô phỏng thuật toán sắp xếp Selection Sort

  • Code Vui
  • 17/10/2020
  • Lượt xem: 5,153

Chọn phần tử nhỏ nhất trong n phần tử ban đầu, đưa phần tử này về vị trí đúng là đầ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.

Các bước thực hiện thuật toán

1. Chọn phần tử đầu tiên i = 0

2. Tìm phần tử a[min] nhỏ nhất trong mảng từ a[i] tới a[n]. Với n là độ dài của mảng

3. Hoán đổi vị trí a[i] với a[min]

4. Tiếp tục chọn phần tử i = i + 1 và quay về bước 1

Mã nguồn được thực hiện trên javascript
Tạo dãy số ngẫu nhiên để mô phỏng sắp xếp
Tạo dãy số
Mã nguồn được thực hiện trên javascript
var SelectionSort = function ()
{
    $.extend(this, new SortX());
    this.name = "SelectionSort";

    this.onCreateScripts = function (array, scripts)
    {
        var $this = this;
        var addScript = function (a1, a2, action)
        {                
            scripts.push($this.createScript0(a1, a2)); // Script lấy ra 2 số cần so sánh
            scripts.push($this.createScript1(a1, a2)); // Script để thực hiện so sánh giữa 2 số
            return action();
        }

        var min;
        for (var i = 0; i < array.length - 1; i++)
        {
            min = i;
            scripts.push(this.createScriptOneItem(array[min]));

            for (var j = i + 1; j < array.length; j++)
            {   
                if (addScript(array[j], array[min], () => array[j].number < array[min].number))
                {
                    min = j;
                    scripts.push(this.createScriptOneItem(array[min]));
                }
            }
            
            var b1 = array[i];
            var b2 = array[min];

            array[min] = b1;
            array[i] = b2;

            scripts.push(this.createScript2(b1, b2)); // Script thực hiện hoán đổi giữa 2 số với nhau.
        }
    }
}

var pageSortX = new PageSortX();
pageSortX.sortX = new SelectionSort();
pageSortX.start();

Chúc các bạn cuối tuần vui vẻ

Sơn 20

Nếu bạn thấy nội dung chia sẻ này có ích với bạn hãy Donate để tạo động lực cho tôi viết các bài viết tiếp theo nhé. Cảm ơn nhiều !!!!

Bài viết cùng chuyên mục

Code javascript mô phỏng 50 xe của một xí nghiệp taxi chạy online trên bản đồ

Mô phỏng hiển thị xe chạy theo thời gian thực, sử dụng thư viện bản đồ leafletjs.

15/11/2020 Xem chi tiết
Code mô phỏng lộ trình của xe taxi chạy trên bản đồ

Dùng thư viện leafletjs để thay cho google map api mô phỏng lộ trình xe chạy.

04/11/2020 Xem chi tiết
Mô phỏng cách tính nhanh từ năm dương lịch sang năm âm lịch

Tính nhanh năm âm lịch từ năm 1900 tới nay gồm 2 bước nhẩm tính Can, Chi. Tôi 1983 nhẩm nhanh là Quý Hợi

25/10/2020 Xem chi tiết
Hướng dẫn và mô phỏng thuật toán sắp xếp Insertion Sort

Thuật toán dựa trên ý tưởng xếp bài khi lần lượt di chuyển phần tử về bên trái

06/10/2020 Xem chi tiết
Hướng dẫn và mô phỏng thuật toán sắp xếp Quick Sort

Thực hiện phân chia mảng thành 2 mảng nhỏ và sắp xếp so với một phần tử chốt.

04/10/2020 Xem chi tiết
Mô phỏng tính nhẩm nhanh một số nhân với 99

Cách tính nhanh nhân một số có 2 chữ số với 99

03/10/2020 Xem chi tiết
{"nalias":"huong-dan-va-mo-phong-thuat-toan-sap-xep-selection-sort","lang":"2","cattype":"0","catId":"9","UrlEngine":"UrlNewsEngine","site":"1"}