Sie sind auf Seite 1von 8

GeeksforGeeks

A computer science portal for geeks Practice GATE CS Placements Videos Contribute

Login/Register

Skip to content

ShellSort

ShellSort is mainly a variation of Insertion Sort. In insertion sort, we move elements only one position
ahead. When an element has to be moved far ahead, many movements are involved. The idea of
shellSort is to allow exchange of far items. In shellSort, we make the array h-sorted for a large value
of h. We keep reducing the value of h until it becomes 1. An array is said to be h-sorted if all sublists
of every hth element is sorted.

Following is C++ implementation of ShellSort.

C++

Java

// Java implementation of ShellSort

class ShellSort

/* An utility function to print array of size n*/

static void printArray(int arr[])

int n = arr.length;

for (int i=0; i<n; ++i)

System.out.print(arr[i] + " ");

System.out.println();

}
/* function to sort arr using shellSort */

int sort(int arr[])

int n = arr.length;

// Start with a big gap, then reduce the gap

for (int gap = n/2; gap > 0; gap /= 2)

// Do a gapped insertion sort for this gap size.

// The first gap elements a[0..gap-1] are already

// in gapped order keep adding one more element

// until the entire array is gap sorted

for (int i = gap; i < n; i += 1)

// add a[i] to the elements that have been gap

// sorted save a[i] in temp and make a hole at

// position i

int temp = arr[i];

// shift earlier gap-sorted elements up until

// the correct location for a[i] is found

int j;

for (j = i; j >= gap && arr[j - gap] > temp; j -= gap)

arr[j] = arr[j - gap];

// put temp (the original a[i]) in its correct

// location
arr[j] = temp;

return 0;

// Driver method

public static void main(String args[])

int arr[] = {12, 34, 54, 2, 3};

System.out.println("Array before sorting");

printArray(arr);

ShellSort ob = new ShellSort();

ob.sort(arr);

System.out.println("Array after sorting");

printArray(arr);

/*This code is contributed by Rajat Mishra */

Python

Output:

Array before sorting:

12 34 54 2 3

Array after sorting:


2 3 12 34 54

Time Complexity: Time complexity of above implementation of shellsort is O(n2). In the above
implementation gap is reduce by half in every iteration. There are many other ways to reduce gap
which lead to better time complexity. See this for more details.

References:

https://www.youtube.com/watch?v=pGhazjsFW28

http://en.wikipedia.org/wiki/Shellsort

Snapshots:

scene00721

scene00793

scene00937

scene01009

scene01801

scene02305

Quiz on Shell Sort

Other Sorting Algorithms on GeeksforGeeks/GeeksQuiz:

Selection Sort

Bubble Sort

Insertion Sort

Merge Sort

Heap Sort
QuickSort

Radix Sort

Counting Sort

Bucket Sort

Coding practice for sorting.

Please write comments if you find anything incorrect, or you want to share more information about
the topic discussed above

GATE CS Corner Company Wise Coding Practice

Sorting

Recommended Posts:

Comb Sort

Cycle Sort

Merge Sort

Radix Sort

Sorting Terminology

Post navigation<< Previous PostNext Post >>

(Login to Rate and Mark)


0 Average Difficulty : 0/5.0

No votes yet.

Add to TODO List

Mark as DONE

Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.

Share this post!

Trending Content

Printing Longest Common Subsequence

Modular multiplicative inverse

Segregate 0s and 1s in an array

Priority Queue | Set 1 (Introduction)

Reverse a stack using recursion

Dynamic Programming | Set 27 (Maximum sum rectangle in a 2D matrix)

A Programmers approach of looking at Array vs. Linked List

Union-Find Algorithm | Set 2 (Union By Rank and Path Compression)

Commonly asked Computer Networks Interview Questions | Set 1

Divide and Conquer | Set 1 (Introduction)

ProGeek Cup 1.0


Most Visited Posts

Top 10 Algorithms and Data Structures for Competitive Programming

Top 10 algorithms in Interview Questions

How to begin with Competitive Programming?

Step by Step Guide for Placement Preparation

How to prepare for ACM-ICPC?

Insertion Sort, Binary Search, QuickSort, MergeSort, HeapSort

Popular Categories

Common Interview Puzzles

Interview Experiences

Advanced Data Structures

Design Patterns

Dynamic Programming

Greedy Algorithms

Backtracking

Pattern Searching

Divide & Conquer

Geometric Algorithms

Searching

Sorting

Analysis of Algorithms

Mathematical Algorithms

Randomized Algorithms
Recursion

Game Theory

G-Facts

Tags

Advanced Data Structure Amazon Aptitude Aptitude Arrays Bit Magic C C C C++ C++ C/C++ cpp-library
Data Structures Data Structures DBMS Dynamic Programming Experienced GATE-CS-2009 GATE-CS-
2012 GATE-CS-2013 GBlog Graph Hash Internship Interview Experiences Java Java java- Linked Lists
Mathematical Matrix MCQ Microsoft Program Output Puzzles Python QA - Placement Quizzes QA -
Placement Quizzes Searching Sorting STL Strings Technical Scripter Trees

Recent Comments

@geeksforgeeks, Some rights reserved Contact Us! About Us! Advertise with us!
Privacy Policy

Das könnte Ihnen auch gefallen