Shell Sort



Notasi :
//judul : Shell sort
//oleh : rizky syah gumelar
//tanggal : 2 April 2022
//deskripsi :
 
//Kamus global
temp, x, y, z <-- interger
bil[6] = {34,98,17,70,6,29} <-- interger, array
//int main
 
output "Data yang diinput :"
x <-- 0                                     //awalan
while (x < 6){                         //target
            output bil[x]                //yang diulang
            x = x + 1                                  //counter
}
 
//sort
x = 6/2 <-- karena data array ada 6 dan data tersebut dibagi 2 untuk membandingkan data
while (x > 0){                         //Kondisi
            y = x
            while (y < 6){                        
                        temp = bil[y]   //memasukkan data ke variabel lain sebelum bertukar
                        z=y
                        while (z >= x dan bil[z-x] > temp){
                                    // bertukar
                                    bil[z] = bil[z-x]
                                    z = z - x
                        }
                        bil[z] = temp
                        y = y + 1                                 
            }
            x = x/2
}
 
 
//output
output "Urutan data dari yang terkecil ke terbesar :"
//nilai x direset ke 0 untuk output
x <-- 0
while (x < 6){
            output bil[x]
}
 
Koding :

//judul : Shell sort
//oleh : rizky syah gumelar
//tanggal : 2 April 2022
//deskripsi :
#include <iostream>
 
using namespace std;
 
int main()
{
    //kamus
    int temp, x, y, z;
    int bil[6] = {34,98,17,70,6,29};
 
    //cetak
    cout << "Data yang diinput :" << endl;
    x=0;
    while(x<6){
        cout << bil[x] << " ";
        x++;
    }
 
    //shell sort versi for
    /*for (x = 6 / 2; x > 0; x /= 2) {
        for (y = x; y < 6; y += 1) {
          temp = bil[y];
          for (z = y; z >= x && bil[z - x] > temp; z -= x) {
            bil[z] = bil[z - x];
          }
          bil[z] = temp;
        }
      }*/
 
    //shell sort
    x = 6/2;
    while(x>0){
        y=x;
        while(y<6){
            temp = bil[y];
            z=y;
            while(z >= x && bil[z - x] > temp){
                bil[z] = bil[z - x];
                z-=x;
            }
            bil[z] = temp;
            y+=1;
        }
        x/=2;
    }
 
    //output
    cout << "\n\nUrutan data dari yang terkecil ke terbesar :" << endl;
    x=0;
    while(x<6){
        cout << bil[x] << " ";
        x++;
    }
    cout << endl;
    return 0;
}
 

Screenshot hasil:



WhatsApp Welcome to WhatsApp chat
Howdy! How can we help you today?
Type here...