Insert Sort zliczanie przestawień i porównań

0
 
int IS(int tablica[], int rozmiar)
{
	int i;
	int por = 0;
	int prz = 0;
	int a;
	
	for (int j = 1; j < rozmiar; ++j)
	{
		int x = tablica[j];
		i = j - 1;
		while (i >= 0 && tablica[i] > x)
		{
			tablica[i+1] = tablica[i];
			i = i - 1;
			prz++;
	
			if ((i+1)%100==0) std::cout << " Przestawien  " << prz << std::endl;
			
		}
		tablica[i+1] = x;
		por++;
	}
	
}

Mam tak algorytm IS, w którym mam zliczyć ilość porównań i przestawień elementów tablicy. Dla tablicy rozmiaru 100 if powinien wypisac to raz, a wypisuje wiele razy. Dlaczego? Jak zrobić, aby wyświetlało mi tę informację z krokiem 100 i informacją o sumarycznej ilości przestawień do tej pory? Z góry dziękuję za pomoc.

0

Bo masz i >=0 a 0%100 == 0

0

Z tym sobie poradziłem. Teraz inna sprawa. Mój kod wypisuje to co chce z krokiem 100 w konsoli, lecz mam przenieść to do excela i zrobić wykres.

int zapisz(int a){

    std::ofstream plik("tablice.xls");

    

    for(int j=0;j<rozmiar/100;++j){
		
		
		plik << a << "\t";
           
		
    
}
    plik.close();    

}
 

int IS(int tablica[], int rozmiar)
{
	int i;
	int por = 0;
	long long int prz = 0;
	int a;
	
	
	for (int j = 1; j < rozmiar; ++j)
	{
		int x = tablica[j];
		i = j - 1;
		while (i >= 0 && tablica[i] > x)
		{
			tablica[i+1] = tablica[i];
			i = i - 1;
			prz++;
			//if ((i+1)%100==0) std::cout << " Przestawien   " << prz << std::endl;
		}
		tablica[i+1] = x;
		por++;
		if ((j+1)%100==0) std::cout << " Porownan   " << por << "  ";
		if ((j+1)%100==0) std::cout << " Przestawien   " << prz <<  "  ";
		
		
	}
	
	
	std::cout << std::endl;

}

Co i gdzie mam dopisać/zmienić, aby wysłało mi to do excela kolumnami w kolejności indeks/porownania/przestawienia? Jak teraz próbuje to albo wysyła mi całkowitą liczbę porównań i przestawieć raz lub wiele razy. Co zmienić, aby wyświetlało się to jak w konsoli? Albo choć jak z tych if-ów zrobić tablica dla por i prz. Z góry dzięki za pomoc.

0

Plik w postaci:

kolumna1 \t kolumna2 \t kolumna3 \n
kolumna1 \t kolumna2 \t kolumna3 \n

excel odczyta i powsadza odpowiednie wartości w komórki

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