//Insert sort public async void InsertSort() { //Object of ButtonRaindbow class ButtonRainbow RnbwBtn = new ButtonRainbow(ArraySize); int[] Temp_Array = Random_Array; for (int i = 1; i < Temp_Array.Length; i++) { SkipButton.IsEnabled = true; label1.Content = i; int j = 0; for (j = i; j >= 2 && (Temp_Array[j - 1] > Temp_Array[j]); j--) { int tmp = Temp_Array[j - 1]; Temp_Array[j - 1] = Temp_Array[j]; Temp_Array[j] = tmp; RnbwBtn.SetRGBColorForButton(j, Temp_Array); RnbwBtn.SetRGBColorForButton(j - 1, Temp_Array); label3.Content = Int32.Parse(label3.Content.ToString()) + 1; //Delay between iterations do { if (!Skipflag) { await Task.Delay(Sorting_Delay); } if (PauseFlag) { await Task.Delay(1); SkipButton.IsEnabled = false; } } while (PauseFlag); } } button0.IsEnabled = true; button1.IsEnabled = false; comboBox1.IsEnabled = true; CreatingSize.IsEnabled = true; Skipflag = false; SkipButton.IsEnabled = false; }
//сортировка пузырьком public async void BubbleSort() { ButtonRainbow rainbow = new ButtonRainbow(ArraySize); int[] arr = Random_Array; int temp; for (int i = 0; i < arr.Length; i++) { SkipButton.IsEnabled = true; label1.Content = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[i] > arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; rainbow.SetRGBColorForButton(j, arr); rainbow.SetRGBColorForButton(i, arr); label3.Content = Int32.Parse(label3.Content.ToString()) + 1; do { if (!Skipflag) { await Task.Delay(Sorting_Delay); } if (PauseFlag) { await Task.Delay(1); SkipButton.IsEnabled = false; } } while (PauseFlag); } } } button0.IsEnabled = true; button1.IsEnabled = false; comboBox1.IsEnabled = true; CreatingSize.IsEnabled = true; Skipflag = false; SkipButton.IsEnabled = false; }
//шейкерная сортировка public async void ShakerSort() { SkipButton.IsEnabled = true; ButtonRainbow rainbow = new ButtonRainbow(ArraySize); int[] array = Random_Array; int temp; for (var i = 0; i < array.Length / 2; i++) { SkipButton.IsEnabled = true; label1.Content = i; var swapFlag = false; for (var j = i; j < array.Length - i - 1; j++) { if (array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; swapFlag = true; rainbow.SetRGBColorForButton(j + 1, array); rainbow.SetRGBColorForButton(j, array); label3.Content = Int32.Parse(label3.Content.ToString()) + 1; do { if (!Skipflag) { await Task.Delay(Sorting_Delay); } if (PauseFlag) { await Task.Delay(1); SkipButton.IsEnabled = false; } } while (PauseFlag); } } for (var j = array.Length - 2 - i; j > i; j--) { if (array[j - 1] > array[j]) { temp = array[j - 1]; array[j - 1] = array[j]; array[j] = temp; swapFlag = true; rainbow.SetRGBColorForButton(j, array); rainbow.SetRGBColorForButton(j - 1, array); label3.Content = Int32.Parse(label3.Content.ToString()) + 1; do { if (!Skipflag) { await Task.Delay(Sorting_Delay); } if (PauseFlag) { await Task.Delay(1); SkipButton.IsEnabled = false; } } while (PauseFlag); } } if (!swapFlag) { break; } do { if (!Skipflag) { await Task.Delay(Sorting_Delay); } if (PauseFlag) { await Task.Delay(1); SkipButton.IsEnabled = false; } } while (PauseFlag); } CreatingSize.IsEnabled = true; comboBox1.IsEnabled = true; button0.IsEnabled = true; button1.IsEnabled = false; Skipflag = false; SkipButton.IsEnabled = false; }