Pomyślałem że fajnie by było napisać program który by oprócz sortowania pokazywał co robi przez podświetlanie porównywanych elementów, krótko myślałem szybko usiadłem do pisania
napisałem buble sort no fajnie działa pomyślałem to teraz to podświetlanie i tu zonk bo to co myślałem że będzie łatwe poprzez zmianę koloru tła textblocka nie działa, kod daję poniżej
namespace SortingAlgorithmVisualisation
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private TextBlock[] Number;
private string To_Swap;
public MainWindow()
{
InitializeComponent();
Number = new TextBlock[8];
Number[0] = First;
Number[1] = Second;
Number[2] = Third;
Number[3] = Fourth;
Number[4] = Fifth;
Number[5] = Sixth;
Number[6] = Seventh;
Number[7] = Eighth;
To_Swap = String.Empty;
}
private void Visualisation(object sender, RoutedEventArgs e)
{
//buble sort
for (int i = 0; i < Number.Length; i++)
{
for (int k = 0; k < Number.Length - 1; k++)
{
Number[k].Background = Brushes.Red;
Number[k + 1].Background = Brushes.Blue;
System.Threading.Thread.Sleep(300);
if (Convert.ToInt32(Number[k].Text) > Convert.ToInt32(Number[k + 1].Text))
{
To_Swap = Number[k].Text;
Number[k].Text = Number[k + 1].Text;
Number[k + 1].Text = To_Swap;
To_Swap = String.Empty;
}
System.Threading.Thread.Sleep(300);
Number[k].Background = Brushes.White;
Number[k + 1].Background = Brushes.White;
}
}
}
}
}
I teraz pytanie właściwe jak uzyskać taki efekt podświetlania? I dlaczego jak mam w kodzie System.Threading.Thred.Sleep(); to program nie działa poprawnie? w sensie zrobi jedną zmianę tyle