Oto mój kod sortowania bąbelkowego. Czy mógłby mi ktoś powiedzieć z czego wynika błąd ? Spotykam się z nim coraz częściej. Może błąd jest w moim rozumowaniu. Głównie chodzi mi o wypisywanie tej tablicy, bo reszta jest chyba ok.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
int n,i;
n = 10;
int[] tablica = new int[n] ;
tablica[0] = 1305 ;
tablica[1] = 12 ;
tablica[2] = -3 ;
tablica[3] = 788 ;
tablica[4] = 2 ;
tablica[5] = 788 ;
tablica[6] = -10 ;
tablica[7] = 0 ;
tablica[8] = 9 ;
tablica[9] = -55 ;
for (i = 0; i < n; i++) ;
Console.WriteLine(tablica[i]);
n = 10;
do
for (i = 0; i < n - 1; i++)
if (tablica[i] > tablica[i + 1])
tablica[i] = tablica[i + 1];
while (n > 1);
}
}
}
do
for (i = 0; i < n - 1; i++)
if (tablica[i] > tablica[i + 1])
tablica[i] = tablica[i + 1];
while (n > 1);
co to jest?
nawet jeśli nie trzeba używać nawiasów klamrowych to w dobrym tonie jest ich używanie.
serio co to jest? spójrz ten kawałek kodu i zastanów się co chciałeś napisać bo w tym momencie masz nieskończonę pętlę (n nigdzie się nie zmienia więc nie osiągnie wartości mniejszej równej 1, jeśli warunek z if’a jest prawdziwy nadpisujesz wartość w komórce tablicy i tracisz ją
Ja jestem osobiście zwolennikiem klamerek. Stosuj je, później jak zobaczysz cudzy kod bez klamerek to się za głowę złapiesz o co tam chodzi Nawet jak if czy for mają jedną linijkę pod sobą jest to znacznie bardziej czytelne. Po drugie. Nadpisujesz wartości a nie zamieniasz. Po trzecie nie zmniejszasz wartości n o jeden po każdym obrocie pętli do{}while
A to takie przyzwyczajenie z pętli for. W pierwszej pętli masz i, i to jest tylko licznik pętli zewnętrznej, Ty użyłeś n ale zapomniałeś o zmniejszaniu tego n. J to jest coś w stylu I u Ciebie.
Po Twojemu to powinno wyglądać tak
do
{
for (i = 0; i < n - 1; i++)
{
if (tablica[i] > tablica[i + 1])
{
int tmp = tablica[i];
tablica[i] = tablica[i + 1];
tablica[i+1]=tmp;
}
}
n--;
}
while (n > 1);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
int n, i;
n = 10;
int[] tablica = new int[n];
tablica[0] = 1305;
tablica[1] = 12;
tablica[2] = -3;
tablica[3] = 788;
tablica[4] = 2;
tablica[5] = 788;
tablica[6] = -10;
tablica[7] = 0;
tablica[8] = 9;
tablica[9] = -55;
for (i = 0; i < n; i++)
Console.WriteLine(tablica[i]);
do
{
for (i = 0; i < n - 1; i++)
{
if (tablica[i] > tablica[i + 1])
{
int tmp = tablica[i];
tablica[i] = tablica[i + 1];
tablica[i+1]=tmp;
}
n--;
}
} while (n > 1);
n = 10;
Console.WriteLine("Po sortowaniu");
for (i = 0; i < n; i++)
Console.WriteLine(tablica[i]);
Console.ReadKey();
}
}
}