কম্পিউটার টিউটোরিয়াল

শেল সোর্ট (Shell Sort)

শেল সোর্ট ইনসারশন সোর্টের উন্নত সংস্করণ। ইনসারশন সোর্টে বড় ব্লক শিফট করতে হয়, শেল সোর্টে নির্দিষ্ট ইন্টারভাল (gap) দিয়ে সোর্ট করা হয়, প্রতিটি পাসের পর গ্যাপ কমে যায়।

শেল সোর্টের জটিলতা

  • টাইম কমপ্লেক্সিটি: বেস্ট কেস O(n log n), অন্যান্য কেসে গ্যাপ সিকোয়েন্সের ওপর নির্ভর
  • স্পেস কমপ্লেক্সিটি: O(1)

ইনপুট এবং আউটপুট

Input: 23 56 97 21 35 689 854 12 47 66
Output: Array before Sorting: 23 56 97 21 35 689 854 12 47 66
        Array after Sorting: 12 21 23 35 47 56 66 97 689 854

অ্যালগরিদম

shellSort(array, size)
Begin
    for gap := size/2; gap > 0; gap := gap/2 do
        for j := gap to size-1 do
            for k := j-gap down to 0 step -gap do
                if array[k+gap] >= array[k] break
                else swap array[k+gap], array[k]
            done
        done
    done
End

C++ উদাহরণ

#include <iostream>
using namespace std;

void swapping(int &a, int &b) { int t=a; a=b; b=t; }
void display(int *a, int n) { for(int i=0;i0; gap/=2)
        for(int j=gap; j=0; k-=gap)
                if(arr[k+gap] < arr[k]) swapping(arr[k+gap], arr[k]);
                else break;
}

int main() {
    int n; cout << "Enter the number of elements: "; cin >> n;
    int arr[n];
    cout << "Enter elements:" << endl;
    for(int i=0; i> arr[i];
    cout << "Array before Sorting: "; display(arr, n);
    shellSort(arr, n);
    cout << "Array after Sorting: "; display(arr, n);
}

আউটপুট

Enter the number of elements: 10
Enter elements: 23 56 97 21 35 689 854 12 47 66
Array before Sorting: 23 56 97 21 35 689 854 12 47 66
Array after Sorting: 12 21 23 35 47 56 66 97 689 854
  1. জাভাস্ক্রিপ্টে রেডিক্স সর্ট (Radix Sort) বাস্তবায়ন

  2. জাভাস্ক্রিপ্ট Sort() মেথড

  3. C#-এ ইনসারশন সোর্ট (Insertion Sort)

  4. পাইথন প্রোগ্রাম: শেল সর্ট বাস্তবায়ন