Shell Sort

                 Shell sort adalah algoritma penyortiran yang sangat efisien dan didasarkan pada algoritma penyortiran. Algoritma ini menghindari pergeseran besar seperti dalam kasus penyisipan, jika nilai yang lebih kecil ke paling kanan dan harus dipindahkan ke paling kiri.

Algoritma ini menggunakan semacam penyisipan pada elemen yang tersebar luas, pertama untuk mengurutkannya dan kemudian mengurutkan elemen yang kurang luas. Jarak ini disebut sebagai interval. Interval ini dihitung berdasarkan rumus Knuth -

                Bagaimana Shell Sort Bekerja?
Mari kita perhatikan contoh berikut untuk memiliki gagasan tentang cara kerja Shell sort. Kami mengambil array yang sama yang telah kami gunakan dalam contoh kami sebelumnya. Untuk contoh dan kemudahan pemahaman kami, kami mengambil interval 4. Buat daftar sub-virtual dari semua nilai yang berada pada interval 4 posisi. Di sini nilai-nilai ini adalah {35, 14}, {33, 19}, {42, 27} dan {10, 44}


Disisni kita membandingkan nilai dalam setiap sub-daftar dan menukarkannya (jika perlu) dalam larik aslinya. Setelah langkah ini, array baru akan terlihat seperti ini


Kemudian, kita mengambil interval 2 dan celah ini menghasilkan dua sub-daftar - {14, 27, 35, 42}, {19, 10, 33, 44}


Kami membandingkan dan menukar nilai, jika diperlukan, dalam larik asli. Setelah langkah ini, array akan terlihat seperti ini -


Akhirnya, kita mengurutkan sisa array menggunakan interval nilai 1. Shell sort menggunakan semacam penyisipan untuk mengurutkan array.

Berikut adalah penggambaran langkah demi langkah -


      Baiklah kita akan memulai pembahasan materi tentang bagaimana Membuat Program Shell Sort di Bahasa Pemrograman Python. Silahkan cermati program di bawah ini :

  1. def shellSort(alist):
  2.     sublistcount = len(alist)//2
  3.     while sublistcount > 0:
  4.         for startposition in range(sublistcount):
  5.             gapinsertionSort(alist,startposition,sublistcount)
  6.         sublistcount = sublistcount // 2

  7. def gapinsertionSort(alist,start,gap):
  8.     for i in range(start+gap,len(alist),gap):
  9.         currentvalue = alist[i]
  10.         position = i
  11.         
  12.         while position>=gap and alist[position-gap] > currentvalue:
  13.             alist[position] = alist[position-gap]
  14.             position = position - gap
  15.             
  16.         alist[position] = currentvalue

  17. data = [35,14,33,19,42,27,10,44]
  18. shellSort(data)
  19. print(data)

Komentar

Posting Komentar

Postingan populer dari blog ini

Infix, Prefix dan Postfix pada Python

Dequeue