Mam problem, napisałem program zgodnie z podanym algorytmem niestety sortowanie ma problem z pierwszą pozycją posortowanej tablicy.
Wpisuje losowe liczby do tablicy od 0 do 9, więc 10 liczb.
Następnie to sortuje, przykład:
wylos: 1124
wylos: 1067
wylos: 794
wylos: -258
wylos: 820
wylos: -1021
wylos: -1071
wylos: -23
wylos: -297
wylos: -885
posortowane liczby:
posort: 1067
posort: -1071
posort: -1021
posort: -885
posort: -297
posort: -258
posort: -23
posort: 794
posort: 820
posort: 1124
Jak widać liczba z drugiej pozycji wpadła mi na pierwszą pozycję tablicy posortowanej, a powinna praktycznie na koniec. Reszta jest okej. Zazwyczaj jest problem z pierwsza lub drugą liczbą.
Algorytm według pisałem według schematu:
mój kod:
Losowanie liczb...
tablica = new int[10];
Random random3 = new Random();
for (int i = 0; i <= 9; i++)
{
tablica[i] = random3.Next(-1200, 1200); ;
}
Sortowanie:
int n = 9;
int p;
int p_min = 0; //tablice mam od 0 nie od 1
int p_max = (n - 1);
do
{
p = 0;
for (int i = p_min; i <= p_max; i++)
{
if (tablica[i] > tablica[i + 1])
{
licznik3++;
schowek3 = tablica[i];
tablica[i] = tablica[i + 1];
tablica[i + 1] = schowek3;
if (p == 1) //tutaj zmiana na ==0 nie daje rozwiązania problemu
p_min = i;
p = i;
}
}
if (p_min > 1)
p_min--;
p_max = p - 1;
}
while (p!=0);
Proszę o jakieś wskazówki co może być nie tak...
dodanie znaczników <code class="csharp">
- @furious programming