Skip to content
Related Articles
C++ Program for Gnome Sort
• Last Updated : 04 Dec, 2018

Algorithm Steps

1. If you are at the start of the array then go to the right element (from arr to arr).
2. If the current array element is larger or equal to the previous array element then go one step right
```                   if (arr[i] >= arr[i-1])
i++;
```
1. If the current array element is smaller than the previous array element then swap these two elements and go one step backwards
```                       if (arr[i] < arr[i-1])
{
swap(arr[i], arr[i-1]);
i--;
}
```
1. Repeat steps 2) and 3) till ‘i’ reaches the end of the array (i.e- ‘n-1’)
2. If the end of the array is reached then stop and the array is sorted.
 `// A C++ Program to implement Gnome Sort``#include ``using` `namespace` `std;`` ` `// A function to sort the algorithm using gnome sort``void` `gnomeSort(``int` `arr[], ``int` `n)``{``    ``int` `index = 0;`` ` `    ``while` `(index < n) {``        ``if` `(index == 0)``            ``index++;``        ``if` `(arr[index] >= arr[index - 1])``            ``index++;``        ``else` `{``            ``swap(arr[index], arr[index - 1]);``            ``index--;``        ``}``    ``}``    ``return``;``}`` ` `// A utility function ot print an array of size n``void` `printArray(``int` `arr[], ``int` `n)``{``    ``cout << ``"Sorted sequence after Gnome sort: "``;``    ``for` `(``int` `i = 0; i < n; i++)``        ``cout << arr[i] << ``" "``;``    ``cout << ``"\n"``;``}`` ` `// Driver program to test above functions.``int` `main()``{``    ``int` `arr[] = { 34, 2, 10, -9 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);`` ` `    ``gnomeSort(arr, n);``    ``printArray(arr, n);`` ` `    ``return` `(0);``}`
Output:
```Sorted sequence after Gnome sort: -9 2 10 34
```

Please refer complete article on Gnome Sort for more details!

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for the language and STL. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up