Pages

C++: Shell Sort

Shell Sort dikembangkan oleh Donald L. Shell pada tahun 1959. Metode ini mengurutkan data dengan cara membandingkan suatu nilai elemen dengan nilai elemen lain yang memiliki jarak tertentu sehingga dibentuk sub-list, kemudian dilakukan pertukaran jika diperlukan.

Script:

#include<iostream>

using namespace std;

void tukar(int &a, int &b)
{
    int temp;
 
    temp = a;
    a = b;
    b = temp;
}

void shellsort(int val[], int n, char o)
{
    if(o == 'A')
    {
        for(int w = n / 2; w > 0; w /= 2)
        {
            for(int x = w; x < n; x++)
            {
                for (int y = x - w; y >= 0; y -= w)
                {
                    if(val[y + w] < val[y])
                        tukar(val[y + w], val[y]);
                    else
                        break;
                }
            }
        }
    }
    else if(o == 'D')
    {
        for(int w = n / 2; w > 0; w /= 2)
        {
            for(int x = w; x < n; x++)
            {
                for (int y = x - w; y >= 0; y -= w)
                {
                    if(val[y + w] > val[y])
                        tukar(val[y + w], val[y]);
                    else
                        break;
                }
            }
        }
    }
}

int main()
{
    char urut;
    int nilai[100];
    int z, jumlah;
 
    cout<<"Jumlah Data  : ";
    cin>>jumlah;
    cout<<"Urut [A/D]   : ";
    cin>>urut;
    cout<<"--------------------------------\n";
    for(z = 0; z < jumlah; z++)
    {
        cout<<"Nilai ke-"<<1 + z<<"  : ";
        cin>>nilai[z];
    }
 
    shellsort(nilai, jumlah, urut);
 
    cout<<"--------------------------------\n";
    cout<<"          HASIL SORTIR          \n";
    cout<<"--------------------------------\n";
    for(z = 0; z < jumlah; z++)
    {
        cout<<nilai[z]<<" ";
    }
 
    return 0;
}

Zhuel Rainz

Rainz Code adalah blog berisi tutorial, script, atau project dari berbagai macam bahasa pemrograman yan diharapkan bisa membantu pembaca untuk belajar pemrograman, membuat tugas, skripsi, atau bahkan membuat aplikasi yang bisa menghasilkan uang. Khusus untuk source code, silahkan email atau hubungi penulis melalui link-link yang sudah tersedia di bawah ini.

No comments:

Post a Comment