Kabuk sıralaması
Vikipedi, özgür ansiklopedi
Kabuk sıralaması (İngilizcesi: Shell sort), bilgisayar bilimlerinde kullanılan bir sıralama algoritmasıdır. Eklemeli sıralama algoritmasının aşağıdaki iki gözlem kullanılarak genelleştirilmiş biçimidir:
- Eklemeli sıralama, sıralanacak dizi zaten büyük oranda sıralıysa daha verimli çalışır.
- Eklemeli sıralama, dizideki öğeleri her adımda yalnızca bir sonraki konuma aktardığından verimsizdir.
Konu başlıkları |
[değiştir] Algoritmanın Geçmişi
Kabuk sıralaması algoritmasının adı algoritmayı bulan kişi olan Donald Shell'den gelmektedir. Soyadı İngilizce'de Kabuk anlamına gelen Donald Shell algoritmayı 1959 yılında yayınlamıştır.
[değiştir] Uygulamalar
[değiştir] C/C++ dilinde yazılmış kabuk sıralaması
Aşağıda C/C++ dilinde yazılmış, bir sayı dizisini kabuk sıralaması algoritmasını kullanarak sıralayan bir program verilmiştir.
void shell_sort(int A[], int size) { int i, j, increment, temp; increment = size / 2; while (increment > 0) { for (i = increment; i < size; i++) { j = i; temp = A[i]; while ((j >= increment) && (A[j-increment] > temp)) { A[j] = A[j - increment]; j = j - increment; } A[j] = temp; } if (increment == 2) increment = 1; else increment = (int) (increment / 2.2); } }
[değiştir] Java dilinde yazılmış kabuk sıralaması
public static void shellSort(int[] a) { for (int increment = a.length / 2; increment > 0; increment = (increment == 2 ? 1 : (int) Math.round(increment / 2.2))) { for (int i = increment; i < a.length; i++) { int temp = a[i]; for (int j = i; j >= increment && a[j - increment] > temp; j -= increment){ a[j] = a[j - increment]; a[j - increment] = temp; } } } }
[değiştir] Python dilinde yazılmış kabuk sıralaması
def shellsort(a): def increment_generator(a): h = len(a) while h != 1: if h == 2: h = 1 else: h = 5*h//11 yield h for increment in increment_generator(a): for i in xrange(increment, len(a)): for j in xrange(i, increment-1, -increment): if a[j - increment] < a[j]: break a[j], a[j - increment] = a[j - increment], a[j] return a