Shellsort

Algoritma shellsort adalah algoritma pengurutan dengan "memecah" array menjadi beberapa sub-array, kemudian elemen-elemen antar sub-array tersebut diurutkan.

Untuk lebih jelasnya, lihat video berikut ini.


Fungsi shellsort

void shellsort(int array[], int n)
{
   // pecah array menjadi 2 buah sub-array
   for (int i = n / 2; i > 0; i = i / 2)
   {
      // urutkan elemen antar sub-array
      for (int j = i; j < n; j++)
      {
         for (int k = j - i; k >= 0; k--)
         {
            // bandingkan elemen antar sub-array
            if (array[k] > array[k + i])
            {
               int temp = array[k];
               array[k] = array[k + i];
               array[k + i] = temp;
            }
         }
      }
   }
}

Program shellsort
#include <stdio.h>

void shellsort(int array[], int n)
{
   // pecah array menjadi 2 buah sub-array
   for (int i = n / 2; i > 0; i = i / 2)
   {
      // urutkan elemen antar sub-array
      for (int j = i; j < n; j++)
      {
         for (int k = j - i; k >= 0; k--)
         {
            // bandingkan elemen antar sub-array
            if (array[k] > array[k + i])
            {
               int temp = array[k];
               array[k] = array[k + i];
               array[k + i] = temp;
            }
         }
      }
   }
}

int main()
{
 int num;
 printf("Masukkan banyak data: ");
 scanf("%d", &num);

 int data[num];
 for (int i = 0; i < num; i++)
 {
  printf("data ke-%d: ", i);
  scanf("%d", &data[i]);
 }

 shellsort(data, num);

 for (int i = 0; i < num; i++)
 {
  printf("%d ", data[i]);
 }
 return 0;
}

Post a Comment