Posted by : 86Gems 30 March 2014

Thuật toán Shaker Sort

Thuật toán Shaker Sort là cải tiến của Bubble Sort nhưng được cải tiến từ sắp xếp 1 chiều thành 2 chiều.

Ý tưởng:
Giải thuật sẽ bắt đầu từ đầu hoặc cuối mảng,mỗi làn sắp xếp gồm 2 lượt: lượt đi và về. Ở lượt đi khi sắp xếp xong ta sẽ dùng biến k để đánh dấu trước vị trí đã được sắp xếp 

 

Code: 

#include <iostream>
using namespace std;
void sharer_sort(int a[], int n)
{
    int tg,ex;
     do
     {
        ex=0;
        for (int i=n-1; i>0;i--)
        {
         if (a[i-1]>a[i])
            {
            tg=a[i-1];
            a[i-1]=a[i];
            a[i]=tg;
            ex=1;
            }
        }
        for(int j=1; j<n;j++)
            {
            if (a[j-1]>a[j])
                {
                tg=a[j-1];
                a[j-1]=a[j];
                a[j]=tg;
                ex=1;
                }
            }
    }
    while(ex);
}

int main()
{
    int n;
    cout <<"Nhap so cac so hang can sap xep:  ";
    cin >> n;
    int a[n];
    cout<<"Nhap cac so hang: "<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<"a"<<i+1<<": " ;
        cin >>a[i];
        cout << endl;
    }
    sharer_sort(a,n);
    cout<<"Day sau khi sap xep:  ";
    for(int i=0;i<n;i++)
        cout<<a[i] << "  ";
}





Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Kiến thức tổng quan - Vòng Đá 5A - Powered by Blogger - Designed by SnowBlack -