Алгоритм простого сортування вставками має у своїй основі просту ідею: перебрати усі елементи масиву і вставити їх у правильне місце. Так, як ви це робите, коли сортуєте свої карти в порядку зростання під час гри. Припустимо, що масив, який необхідно відсортувати, має назву Array. Для того, щоб його відсортувати необхідні ще кілька змінних: x - змінна для збереження одного елементу масива, який ми потім вставимо в правильне місце, довжина масиву, яка зберігається в змінній під назвою N і ще дві змінні ітератори-бігунки - iter і jter. Тоді, в простому вигляді, наш цикл сортування (адже сортувати ми будемо в циклі - перебір усіх елементів) буде виглядати наступним чином:
for (iter=0; iter<N; iter++)
{
    x = Array [iter] ;
    
    /* вставити x у потрібне місце масиву Array */
}
А як нам обрати правильне місце вставки у масив? В цьому нам допоможе, дещо мидифікований, алгоритм лінійного пошуку. Отже для сортування елементів масиву у порядку зростання, нам необхідно знайти перший елемент, який менший за збережене значення масиву в змінній x, і якщо в даній позиції не виконується умова - посунути поточний елемент масиву вправо. Цикл виконується в зворотньому порядку (тобто від більшого індексу елемента до меншого) від позиції ітератора iter. Ось як тепер виглядає наш код сортування:
/* початок сортування */
/* Зверніть увагу, цикл починає з першого, а не нульового елементу! */
for (iter=1; iter<N; iter++) /* зовнішній цикл сортування */
{
    x = Array [iter] ; /* зберігаємо значення елемента масиву */
        
    /* знаходження правильного місця починається з місця iter */
    jter = iter ; 
        
    /* вставляємо x у потрібне місце масиву Array */
    while ( (jter>0) && (x<Array[jter-1]) ) /* внутрішній цикл */
    {
        /* якщо значення x менше за поточне в позиції (jter-1) - 
        ** посуваємо елемент на позицію вліво (тобто ближче 
        ** до початку масива) */
        Array[jter] = Array[jter-1] ; 
        /* декремент ітератора бігунка (зменшення значення на одиницю) */
		  jter-- ; 
    }
    
    /* ми знайшли необхідне місце у масиві - 
	 ** присвоїти йому наше збережене значення */
    Array[jter] = x ;
}
Проста програма, яка використовує даний код, може виглядати наступним чином:
#include <iostream> /* для виводу на екран */
using namespace std; /* використовуємо простір імен з iostream */

int main (int argc, char** argv) /* головна функція програми */
{
    int Array [] = {11, 5, 7, 8, 3, 4, 2, 9, 0, 1, 6, 10, 13, 12} ;
    
    int N = sizeof (Array) / sizeof (Array[0]) ; /* дізнаємося довжину масиву */

    int iter, jter ; /* бігунки-ітератори для перебору масиву */
    
    int x ; /* змінна, в якій тимччасово зберігається значення елементу масива*/

    /* виводимо масив на екран (цей код можна вивести в процедуру) */
    for (iter=0; iter<N; iter++)
    { cout << Array[iter] << " " ; }
    cout << endl ;

    /* початок сортування */
    /* Зверніть увагу, цикл починає з першого, а не нульового елементу! */
    for (iter=1; iter<N; iter++) /* зовнішній цикл сортування */
    {
        x = Array [iter] ; /* зберігаємо значення елемента масиву */
        
        /* знаходження правильного місця починається з місця iter */
        jter = iter ; 
        
        /* вставляємо x у потрібне місце масиву Array */
        while ( (jter>0) && (x<Array[jter-1]) ) /* внутрішній зворотній цикл */
        {
            /* якщо значення x менше за поточне в позиції (jter-1) - 
            ** посуваємо елемент на позицію вліво (тобто ближче 
            ** до початку масива) */
            Array[jter] = Array[jter-1] ; 
            /* декремент ітератора бігунка (зменшення значення на одиницю) */
            jter-- ; 
        }

		  /* ми знайшли необхідне місце у масиві - 
        ** присвоїти йому наше збережене значення */
        Array[jter] = x ;
    }

    /* виводимо масив на екран */
    for (iter=0; iter<N; iter++)
    { cout << Array[iter] << " " ; }
    cout << endl ;
 
    return 0 ; /* вихід з програми */   
}
Після виконання програми на комп'ютері, ми отримаємо наступне: Екран-Terminal Усе, масив відсортовано в порядку зростання. Щоб отримати масив в порядку спадання, ми повинні модифікувати другий предикат умови внутрішнього циклу, заміною оператора '<' на оператор '>' (тобто просто заміняємо 'x<Array[jter-1]' на 'x>Array[jter-1]'):
#include <iostream> /* для виводу на екран */
using namespace std; /* використовуємо простір імен з iostream */

int main (int argc, char** argv) /* головна функція програми */
{
    int Array [] = {11, 5, 7, 8, 3, 4, 2, 9, 0, 1, 6, 10, 13, 12} ;
    
    int N = sizeof (Array) / sizeof (Array[0]) ; /* дізнаємося довжину масиву */

    int iter, jter ; /* бігунки-ітератори для перебору масиву */
    
    int x ; /* змінна, в якій тимччасово зберігається значення елементу масива*/

    /* виводимо масив на екран */
    for (iter=0; iter<N; iter++)
    { cout << Array[iter] << " " ; }
    cout << endl ;

    /* початок сортування */
    /* Зверніть увагу, цикл починає з першого, а не нульового елементу! */
    for (iter=1; iter<N; iter++) /* зовнішній цикл сортування */
    {
        x = Array [iter] ; /* зберігаємо значення елемента масиву */
        
        /* знаходження правильного місця починається з місця iter */
        jter = iter ; 
        
        /* вставляємо x у потрібне місце масиву Array */
        /* модифіковано для порядку спадання */
        while ( (jter>0) && (x>Array[jter-1]) ) /* внутрішній зворотній цикл */
        {
            /* якщо значення x більше за поточне в позиції (jter-1) - 
            ** посуваємо елемент на позицію вліво (тобто ближче 
            ** до початку масива) */
            Array[jter] = Array[jter-1] ; 
            /* декремент ітератора бігунка (зменшення значення на одиницю) */
            jter-- ; 
        }
        /* ми знайшли необхідне місце у масиві - 
        ** присвоїти йому наше збережене значення */
        Array[jter] = x ;
    }

    /* виводимо масив на екран */
    for (iter=0; iter<N; iter++)
    { cout << Array[iter] << " " ; }
    cout << endl ;
 
    return 0 ; /* вихід з програми */   
}
Після виконання програми на комп'ютері ми отримаємо: simple_insertion_sort_descending