C++ sortowanie przez wstawianie - dlaczego nie działa?

0
#include <iostream>
#include <string>
#include <ctime>
#include <conio.h>

using namespace std;

void WYPISZ(int tablica[], int rozmiar)
{
	for(int i = 0; i < rozmiar; i ++)
	{
		cout << tablica[i];
		cout << endl;
	}
}


void SORT(int tablica[], int rozmiar)
{

	for(int i = (rozmiar-2); i>=0; i--)
	{
		int temp = tablica[i];
		int j = i++;
		while((temp > tablica[j]) && (j < rozmiar))
		{
			tablica[j-1] = tablica[j];
			j++;
		}
		tablica[j-1] = temp;
	}

}



void main()
{
	
	srand(static_cast<unsigned int>(time(NULL)));
	cout << "Podaj rozmiar tablicy: ";
	int rozmiar;
	cin >> rozmiar;

	int *tablica  = new int[rozmiar];

	for(int i = 0; i <  rozmiar; i++)
	{
		*(tablica +i) = rand() % (100) + 1;
	}

	cout << "Wypiszemy nieposortowana tablice:\n ";
	WYPISZ(tablica, rozmiar);

	
	SORT(tablica, rozmiar);

	cout << "Wypiszemy posortowana tablice:\n ";
	WYPISZ(tablica, rozmiar);

	delete[] tablica;
	system("pause");


}
 

Witam, mam pytanie. Przed olimpiadą informatyczną chciałem przypomnieć sobie mniej więcej składnię C++(ostatnio siedzę w JAVIe, więc miałem prawo trochę pozapominać). No i już przy pierwszym programie pojawił się problem. Mianowicie: jestem niemal pewien że algorytm jest dobry, a sortować jak nie chce tak nie chce. Możliwe że przeoczyłem jakąś drobnostkę, pomożecie? :D

0
 
#include <iostream>
#include <ctime>

using namespace std;
 
void WYPISZ(int tablica[], int rozmiar)
{
        for(int i = 0; i < rozmiar; i ++)
        {
				cout << endl;
                cout << tablica[i];
                
        }
}
 
 
void SORT(int tablica[], int rozmiar)
{
 
        for(int i = (rozmiar-2); i>=0; i--)
        {
                int temp = tablica[i];
                int j = i;
                while((temp > tablica[j+1]) && (j < (rozmiar-1)))
                {
                        tablica[j] = tablica[j+1];
                        j++;
                }
                tablica[j] = temp;
        }
 
}
 
 
 
void main()
{
 
        srand(static_cast<unsigned int>(time(NULL)));
        cout << "\nPodaj rozmiar tablicy: ";
        int rozmiar;
        cin >> rozmiar;
 
        int *tablica  = new int[rozmiar];
 
        for(int i = 0; i <  rozmiar; i++)
        {
                *(tablica +i) = rand() % (100) + 1;
        }
 
        cout << "\nWypiszemy nieposortowana tablice:\n ";
        WYPISZ(tablica, rozmiar);
 
 
        SORT(tablica, rozmiar);
 
        cout << "\nWypiszemy posortowana tablice:\n ";
        WYPISZ(tablica, rozmiar);
 
        delete[] tablica;
        system("pause");
 
 


}

Racja, teraz działa :D Dzięki :)
PS: w sumie to wystarczyło poprawić i++ na j = i +1; Zapomniałem, że i++ ingeruje też w zmienną i :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1