Sortowanie bąbelkowe nie działa – zła odpowiedź już w pierwszym teście

0

Witam mam problem z tym zadaniem: http://solve.edu.pl/tasks/view/156
dostaję złą odpowiedź już na pierwszym teście. Dla przykładowego i dla tych co sprawdzałem działał normalnie.
Proszę o wskazówkę co jest źle.

#include <bits/stdc++.h>
using namespace std;
int tab[1005];

int sortowanie(int n)
{
	int czy=false,pom;

	while(czy==false)
	{
		czy=true;
		for(int i=1;i<n;i)
		{
			if(tab[i]>tab[i+1])
			{
				cout<<tab[i]<<' '<<tab[i+1]<<'\n';
				pom=tab[i];
				tab[i]=tab[i+1];
				tab[i+1]=pom;
				czy=false;
				i+=2;
			}
			else i++;
		}

	}
}

int main() {

	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

	int n;
	cin>>n;
	for(int i=1;i<=n;i++)cin>>tab[i];
	sortowanie(n);
	
	for(int i=1;i<=n;i++)cout<<tab[i]<<' ';

	return 0;
}
0

Do sortowania bąbelkowego potrzebujesz dwóch pętli for :-)

0

@Patryk27: to jest (niepoprawny) kod zoptymalizowanej wersji sortowania bąbelkowego. ;)

0

spróbuj te dane wejściowe:

3
3 1 2
2

Dlaczego w pętlach indeksy zaczynają się od 1?
Funkcja sortowanie nic nie zwraca, więc powinna być typu void.
Przekaż tablicę do funkcji sortowanie, zamiast korzystać z globalnych zmiennych.

Tu masz opisane sortowanie bąbelkowe i algorytm w pseudokodzie: Wiki: Sortowanie bąbelkowe

0

Dziękuję wszystkim już wiem co zrobiłem źle. Nie potrzebnie w niekryty przypadkach chciałem zwiększać zmienną i o 2. Wynikiem mojego algorytmu jest poprawnie posortowany ciąg ale zamienia inne pary liczb niż standardowe sortowanie bąbelkowe przez co nie zaliczało mi zadania.

0

Nieważne jakiego sortowania użyjesz, bo wyjściowy zbiór i tak będzie zawierał dokładnie takie same dane (chyba że implementacja jest skopana). Skoro sędzia nie uznaje Twojego kodu, to znaczy, że działa on nieprawidłowo.

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