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;
}
No comments:
Post a Comment