Thuật toán sắp xếp cocktail

Thuật toán sắp xếp cocktail
Visualization of shaker sort
Phân loạiThuật toán sắp xếp
Cấu trúc dữ liệuArray
Hiệu suất trường hợp tệ nhất
Hiệu suất trường hợp tốt nhất
Hiệu suất trung bình
Độ phức tạp không gian trường hợp tệ nhất
Tối ưuNo

Thuật toán sắp xếp cocktail là một cải tiến của Bubble Sort. Sau khi đưa phần tử nhỏ nhất về đầu dãy, thuật toán sẽ giúp chúng ta đưa phần tử lớn nhất về cuối dãy. Do đưa các phần tử về đúng vị trí ở cả hai đầu nên thuật toán sắp xếp cocktail sẽ giúp cải thiện thời gian sắp xếp dãy số.

Lập trình

[sửa | sửa mã nguồn]
void ShakerSort(int a[], int n)
{
    int Left = 0;
    int Right = n - 1;
    int k = 0;
    int i;
    while (Left < Right)
    {
        for (i = Left; i < Right; i++)
        {
            if (a[i] > a[i + 1])
            {
                swap(a[i], a[i + 1]);
                k = i;
            }
         }
        Right = k;
        for (i = Right; i > Left; i--)
        {
            if (a[i] < a[i - 1])
            {
                swap(a[i], a[i - 1]);
                k = i;
            }
        }
        Left = k;
    }
}

Đánh giá

[sửa | sửa mã nguồn]

Như trên tôi đã nói Thuật toán sắp xếp cocktail là một dạng nâng cao của Bubble Sort nên nó có thể nhận biết được mảng đã được sắp xếp.

Độ phức tạp cho trường hợp tốt nhất là O(n). Độ phức tạp cho trường hợp xấu nhất O(n2). Độ phức tạp trong trường hợp trung bình là O(n2). Thuật toán nhận diện được mảng đã sắp xếp.

Kết luận

[sửa | sửa mã nguồn]

Trong trường hợp mảng có các phần tử là [2, 3, 4, 5, 1] thì đối với Thuật toán sắp xếp cocktail chỉ cần 1 lần duyệt là đã đưa các phần tử của mảng về đúng vị trí, còn với Bubble Sort cần tới 4 lần duyệt để đưa các phần tử về đúng vị trí. Tuy nhiên, trong trường hợp mảng có ngẫu nhiên phần tử với thứ tự đảo lộn thì Bubble Sort và Thuật toán sắp xếp cocktail cho thời gian sắp xếp gần tương đương nhau.

Vì vậy, ta có thể nói rằng Thuật toán sắp xếp cocktail ưu thế hơn Bubble Sort trong trường hợp các phần tử trong mảng đã gần có thứ tự như trong ví dụ trên là mảng [2, 3, 4, 5, 1].

Chúng tôi bán
Bài viết liên quan
Alpha-Beta Pruning - Thuật toán huyền thoại giúp đánh bại nhà vô địch cờ vua thế giới
Alpha-Beta Pruning - Thuật toán huyền thoại giúp đánh bại nhà vô địch cờ vua thế giới
Nếu bạn chơi cờ vua thua một con AI, đừng buồn vì nhà vô địch cờ vua thế giới -Garry Kasparov- cũng chấp nhận thất bại trước nó
Review phim Mouse: Kẻ săn người
Review phim Mouse: Kẻ săn người
Phim nói về cuộc đấu trí giữa tên sát nhân thái nhân cách biệt danh 'Kẻ săn người' và cảnh sát
Honkai: Star Rail - Hướng dẫn build Luocha
Honkai: Star Rail - Hướng dẫn build Luocha
Luocha loại bỏ một hiệu ứng buff của kẻ địch và gây cho tất cả kẻ địch Sát Thương Số Ảo tương đương 80% Tấn Công của Luocha
Một số thông tin đáng lưu ý về tính chuẩn xác khi nói về Lôi Thần của Inazuma - Raiden Ei
Một số thông tin đáng lưu ý về tính chuẩn xác khi nói về Lôi Thần của Inazuma - Raiden Ei
Vị thần của vĩnh hằng tuy vô cùng nổi tiếng trong cộng đồng người chơi, nhưng sự nổi tiếng lại đi kèm tai tiếng