Demo thuật toán selection sort trực quan winform

Hi rảnh ngồi copy paste code mô tả thuật toán selection sort, hoạt động trên c# winform

private async Task SelectionSort()
{
    for (int i = 0; i < array.Length - 1; i++)
    {
        int minIndex = i;
        DrawArray(i, minIndex, -1); // Vẽ mảng, đánh dấu vị trí bắt đầu kiểm tra
        await Task.Delay(300);      // Tạm dừng để quan sát

        for (int j = i + 1; j < array.Length; j++)
        {
            DrawArray(i, minIndex, j); // Vẽ mảng, đánh dấu cột đang được kiểm tra
            await Task.Delay(300);      // Tạm dừng để quan sát

            if (array[j] < array[minIndex])
            {
                minIndex = j;
                DrawArray(i, minIndex, -1); // Cập nhật màu khi tìm thấy giá trị nhỏ nhất mới
                await Task.Delay(300);      // Tạm dừng để quan sát
            }
        }

        // Đổi chỗ phần tử nhỏ nhất với phần tử tại vị trí i
        int temp = array[i];
        array[i] = array[minIndex];
        array[minIndex] = temp;

        DrawArray(i, minIndex); // Vẽ lại mảng sau mỗi lần đổi chỗ
        await Task.Delay(300);  // Tạm dừng để thấy quá trình sắp xếp
    }
}

Bạn vào trang này để download mã nguồn về nghich chơi nhé

Mô phỏng thuật toán thì bạn có thể dùng site này: https://algorithm-visualizer.org/brute-force/selection-sort

Bạn còn có thể viết code để mô phỏng thuật toán bất kì

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?