C++ Program for Gnome Sort

Algorithm Steps

  1. If you are at the start of the array then go to the right element (from arr[0] to arr[1]).
  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])
  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]);
  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 <iostream>
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)
        if (arr[index] >= arr[index - 1])
        else {
            swap(arr[index], arr[index - 1]);
// 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[0]);
    gnomeSort(arr, n);
    printArray(arr, n);
    return (0);



Sorted sequence after Gnome sort: -9 2 10 34

Please refer complete article on Gnome Sort for more details!

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.