শেল সোর্ট (Shell Sort) অ্যারেতে দূরে থাকা আইটেমের আদান-প্রদান অনুমতি দেয় এবং তারপর তাদের মধ্যে의 গ্যাপ কমিয়ে দেয়। এটি ইনসারশন সোর্ট (Insertion Sort)-এর একটি সাধারণীকরণ। শেল সোর্ট بهذا নাম থেকে পরিচিত কারণ এটি প্রথমে ডোনাল্ড শেল (Donald Shell) দ্বারা প্রকাশিত হয়েছিল।
উদাহরণ
using System;
namespace ShellSortDemo {
public class Example {
static void shellSort(int[] arr, int n) {
int i, j, pos, temp;
pos = 3;
while (pos > 0) {
for (i = 0; i < n; i++) {
j = i;
temp = arr[i];
while ((j >= pos) && (arr[j - pos] > temp)) {
arr[j] = arr[j - pos];
j = j - pos;
}
arr[j] = temp;
}
if (pos / 2 != 0)
pos = pos / 2;
else if (pos == 1)
pos = 0;
else
pos = 1;
}
}
static void Main(string[] args) {
int[] arr = new int[] { 56, 12, 99, 32, 1, 95, 25, 5, 100, 84 };
int n = arr.Length;
int i;
Console.WriteLine("Shell Sort");
Console.Write("Initial array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
shellSort(arr, n);
Console.Write("\nSorted Array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
}
}
}
আউটপুট
Shell Sort Initial array is: 56 12 99 32 1 95 25 5 100 84 Sorted Array is: 1 5 12 25 32 56 84 95 99 100
প্রোগ্রাম ব্যাখ্যা
Main() ফাংশনে, প্রথমে প্রাথমিক অ্যারেটি প্রদর্শন করা হয়। তারপর shellSort() ফাংশনটি কল করা হয় অ্যারেটি সাজানোর জন্য।
shellSort() ফাংশনে, দেওয়া অ্যারেটি একটি while লুপ এবং একটি for লুপ ব্যবহার করে সাজানো হয়। শেল সোর্টের জন্য ব্যবহৃত গ্যাপ হল ৩।