#include<iostream.h>
void insertion_sort(char tablica[], unsigned n);
void wypisz(char tablica[], unsigned n);
int main()
{
char litery[]={'C', 'H' ,'R', 'I', 'S', 'T', 'M', 'A', 'S'};
unsigned i, ilosc = sizeof(litery)/sizeof(char);
cout<<"Program posortuje tablice z literkami metoda \"przez wstawianie\""<<endl;
cout<<"W tablicy mamy "<<ilosc<<" liter, sa to:"<<endl;
wypisz(litery, ilosc);
cout<<endl;
cout<<"Po sortowaniu tablica zawiera litery w nastepujacej kolejnosci:"<<endl;
insertion_sort(litery, ilosc);
wypisz(litery, ilosc);
}

void insertion_sort(char tablica[], unsigned n)
{
unsigned i;
for(i=1; i<n; i++)
{
// Granica fragmentu tablicy, ktory porzadkujemy
unsigned j=i;
// Zapamietaj element "krancowy"
char kopia = tablica[j];
// Wewnatrz fragmentu tablicy przesun elementy "za duze" o 1 pozycje
while( (j>0) && ( tablica[j-1] > kopia))
{
// Przesun element j-1 tablicy o jeden indeks wyzej (do j)
tablica[j] = tablica[j-1];
// Zaktualizuj indeks w tablicy
j--;
}
// Wpisz element "krancowy" w odpowiednie miejsce
tablica[j] = kopia;
}
}
void wypisz(char tablica[], unsigned n)
{
unsigned i;
// Wypisujemy znak po znaku - mamy w tablicy pojedyncze litery, a nie lancuch !!!
for(i=0; i<n; i++) cout<< tablica[i]<<" ";
cout<<endl;
}
