Algoritmul de sortare prin inserţie construieşte pas cu pas lista de elemente sortate, adăugând la ea câte un element la un moment dat. La fiecare pas un element este extras cate un element din lista iniţială şi este introdus în lista de elemente sortate. Elementul este inserat în poziţia corectă în lista sortată, astfel încât ea să rămână sortată în continuare.

 Să presupunem că vrem să sortăm un şir de numere întregi, memorate într-un tablou. Fie şirul de elemente:

 10 5 2 3 4 1 8 7

Lista de elemente sortate se va construi în partea din stânga a tabloului iniţial. La început de tot suntem în situaţia când lista de elemente sortate este vidă.

Algoritmul va alege câte un element din şirul iniţial şi îl va insera în lista de elemente sortate. Elementele din şirul iniţial se aleg în ordinea în care apar ele în şir. În exemplul nostru le vom alege în ordinea 10, 5, 2, 3, etc.

 Începem cu elementul 10. Cum lista de elemente sortate este vidă, inserţia lui va fi foarte simplă. Vom obţine:

 10 5 2 3 4 1 8 7

 Urmează elementul 5. Vrem să îl inserăm în lista de elemente sortate astfel încât ea să rămână sortată. Asta înseamnă că trebuie să îl inserăm înaintea lui 10. Pentru a folosi în mod eficient spaţiul de memorie îl vom aduce pe 10 în locul lui 5 şi pe urmă îl vom pune pe 5 înaintea lui 10. Vom obţine:

 5 10 2 3 4 1 8 7

 Urmează 2. Pe 2 ar trebui să îl inserăm înaintea lui 5. Din nou, pentru a folosi eficient spaţiul de memorie, deplasăm pe 5 şi pe 10 spre dreapta cu o poziţie, şi pe urmă punem pe 2 înaintea lor. Vom obţine:

 2 5 10 3 4 1 8 7

 Urmează 3. Pe 3 trebuie să îl inserăm între 2 şi 5. Vom deplasa pe 5 şi 10 spre dreapta cu o poziţie. În felul acesta se va elibera o poziţie între 2 şi 5, loc unde îl vom pune pe 3. Obţinem:

 2 3 5 10 4 1 8 7

 Procedeul continuă în mod similar până când şi ultimul element din şirul original este plasat pe poziţia corectă în şirul ordonat.

 Putem vedea cum şirul ordonat se construieşte treptat peste şirul sortat, în acelaşi spaţiu de memorie cu acesta.

 Ideea de principiu este că la pasul k avem deja k-1 numere sortate şi vrem să plasăm elementul k pe poziţia corectă între aceste k-1 numere sortate. Deplasăm spre dreapta toate numerele care sunt mai mari decât elementul k. Astfel se va elibera un loc în tablou, loc în care vom plasa elementul k. Cum toate numerele de la dreapta lui sunt mai mari ca el şi toate numerele de la stânga lui sunt mai mici ca el, rezultă că avem acum k numere sortate şi putem trece la pasul k+1.

 Algoritmul insertion sort în pseudocod arată astfel:

  pentru i := 1 pana la N
     aux := a[i];
    j := i-1;
     cat timp (j>=0) si (a[j]>aux)
         a[j+1] := a[j];
         j := j-1;
     sfarsit cat timp;
     a[j+1] := aux;
sfarsit pentru;