Witam.
Mam problem, ponieważ w zadaniu mam podane, że:
-
tablica wejściowa jest już posortowana (można ją w tym przypadku wypełnić kolejnymi liczbami naturalnymi);
-
tablica wejściowa jest „posortowana w odwrotnej kolejności” (sugerowany sposób przygotowania tablicy wejściowej jak wyżej);
I nie mam pojęcia jak ją posortować od tyłu.
Mój kod wygląda tak:
#define MAX 10
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdlib.h>
using namespace std;
int main()
{
int tab[MAX];
int i=1, liczba=0, x=0, temp=0;
int licznik_porownan=0, licznik_zamiany=0;
int wybor;
srand((unsigned)time(NULL));
// POCZATEK WYPELNIANIA TABLICY LICZBAMI LOSOWYMI
for (i=0; i<MAX; i++)
{
tab[i]=rand() % (MAX) + 0;
}
// KONIEC WYPE£NIANIA TABLICY
// POCZATEK SORTOWANIA TABLICY - INSERTION SORT
for (int i=1; i<MAX; i++)
{
temp = tab[i];
int j=i;
while ((j>0) && (tab[j-1]>temp))
{
licznik_porownan++;
tab[j] = tab[j-1];
j--;
}
licznik_zamiany++;
tab[j]=temp;
}
// KONIEC SORTOWANIA TABLICY - INSERTION SORT
// POCZATEK WYSWIETLANIA TABLICY
for (i=0; i<MAX; i++)
{
cout << tab[i] << "\t";
if((i+1)%5==0)
cout << endl;
}
// KONIEC WYSWIETLANIA TABLICY //
// POCZATEK WYSWIETLANIA LICZNIKOW //
cout << "Licznik porownan wynosi -> " << licznik_porownan << endl;
cout << "Licznik zamian wynosi -> " << licznik_zamiany << endl;
// KONIEC WYSWIETLANIA LICZNIKOW //
system("pause");
return 0;
}