public void Start(Node[] listNode) { iLabel = CreateLabel("i", Color.Orange); jLabel = CreateLabel("j", Color.Pink); j_Label = CreateLabel("j-1", Color.Blue); parent.Controls.Add(iLabel); parent.Controls.Add(jLabel); parent.Controls.Add(j_Label); Clear_Label(); for (int i = 0; SelectLine(2) && i < listNode.Length; i++) { NodeServices.SetColor(listNode[i], Color.Orange); iLabel.Location = new Point(listNode[i].img.Location.X, listNode[i].img.Location.Y - 30); iLabel.Text = "i = " + i; NodeServices.Sleep(NodeServices.timeSleep); for (int j = listNode.Length - 1; SelectLine(3) && j > i; j--) { NodeServices.SetColor(listNode[j], Color.Pink); jLabel.Location = new Point(listNode[j].img.Location.X, listNode[j].img.Location.Y - 30); jLabel.Text = "j = " + j; NodeServices.SetColor(listNode[j - 1], Color.Blue); j_Label.Location = new Point(listNode[j - 1].img.Location.X, listNode[j - 1].img.Location.Y + 50 + 10); j_Label.Text = "j-1 = " + (j - 1); NodeServices.Sleep(NodeServices.timeSleep); listCode.SelectedIndex = 4; NodeServices.Sleep(NodeServices.timeSleep); if (listNode[j].n < listNode[j - 1].n) { listCode.SelectedIndex = 5; NodeServices.Swap(ref listNode[j], ref listNode[j - 1]); NodeServices.SetColor(listNode[j], NodeServices.DefaultColor); } else { NodeServices.SetColor(listNode[j], NodeServices.DefaultColor); } } NodeServices.Sleep(NodeServices.timeSleep); NodeServices.SetColor(listNode[i], Color.Green); if (i != listNode.Length - 1) { NodeServices.SetColor(listNode[i + 1], NodeServices.DefaultColor); } } NodeServices.Sleep(NodeServices.timeSleep); SelectLine(6); NodeServices.Sleep(NodeServices.timeSleep); }
private void HeapSort_(Node[] input) { SelectLine(2); int heapSize = input.Length; NodeServices.Sleep(NodeServices.timeSleep); for (int p = (heapSize - 1) / 2; p >= 0 && SelectLine(3); p--) { NodeServices.Sleep(NodeServices.timeSleep); SelectLine(4); NodeServices.Sleep(NodeServices.timeSleep); MaxHeapify(input, heapSize, p); Clear_Label(); } NodeServices.Sleep(NodeServices.timeSleep); SelectLine(5); for (int i = input.Length - 1; i > 0; i--) { NodeServices.Sleep(NodeServices.timeSleep); SelectLine(7); NodeServices.Swap(ref input[0], ref input[i]); NodeServices.SetColor(input[i], Color.Green); NodeServices.DoEvent(); SelectLine(8); heapSize--; NodeServices.Sleep(NodeServices.timeSleep); SelectLine(9); NodeServices.Sleep(NodeServices.timeSleep); MaxHeapify(input, heapSize, 0); Clear_Label(); } }
private void Quicksort_(Node[] input, int left, int right) { Clear_Label(); if (left >= 0 && left < input.Length) { lLabel.Location = new Point(input[left].img.Location.X, NodeServices.Ynode + 50 + 30); } else { if (left < 0) { lLabel.Location = new Point(input[0].img.Location.X - 100, NodeServices.Ynode + 50 + 30); } else { lLabel.Location = new Point(input[input.Length - 1].img.Location.X + 100, NodeServices.Ynode + 50 + 30); } } if (right >= 0 && right < input.Length) { rLabel.Location = new Point(input[right].img.Location.X, NodeServices.Ynode - 50); } else { if (right < 0) { rLabel.Location = new Point(input[0].img.Location.X - 100, NodeServices.Ynode + 50 + 30); } else { rLabel.Location = new Point(input[input.Length - 1].img.Location.X + 100, NodeServices.Ynode + 50 + 30); } } SelectLine(2); NodeServices.Sleep(NodeServices.timeSleep); if (left >= right) { return; } Color color = Color.FromArgb(rad.Next(0, 256), rad.Next(0, 256), rad.Next(0, 256)); for (int u = left; u <= right; u++) { input[u].img.BackColor = color; } NodeServices.DoEvent(); SelectLine(3); int i = left, j = right; iLabel.Location = new Point(input[i].img.Location.X, NodeServices.Ynode - 30); iLabel.Text = "i = " + i; jLabel.Location = new Point(input[j].img.Location.X, NodeServices.Ynode + 50 + 10); jLabel.Text = "j = " + j; NodeServices.SetColor(input[i], Color.Orange); NodeServices.SetColor(input[j], Color.Pink); NodeServices.Sleep(NodeServices.timeSleep); SelectLine(4); int privot = input[(left + right) / 2].n; privotLabel.Text = "privot = " + input[(left + right) / 2].img.Text; NodeServices.DoEvent(); NodeServices.Sleep(NodeServices.timeSleep); while (SelectLine(5) && i <= j) { NodeServices.Sleep(NodeServices.timeSleep); while (SelectLine(7) && input[i].n < privot) { NodeServices.SetColor(input[i], color); NodeServices.Sleep(NodeServices.timeSleep); SelectLine(8); i++; iLabel.Location = new Point(input[i].img.Location.X, iLabel.Location.Y); iLabel.Text = "i = " + i; NodeServices.SetColor(input[i], Color.Orange); NodeServices.Sleep(NodeServices.timeSleep); } NodeServices.SetColor(input[i], Color.Blue); NodeServices.DoEvent(); NodeServices.Sleep(NodeServices.timeSleep); while (SelectLine(9) && input[j].n > privot) { NodeServices.SetColor(input[j], color); NodeServices.Sleep(NodeServices.timeSleep); SelectLine(10); j--; jLabel.Location = new Point(input[j].img.Location.X, jLabel.Location.Y); jLabel.Text = "j = " + j; NodeServices.SetColor(input[j], Color.Pink); NodeServices.Sleep(NodeServices.timeSleep); } NodeServices.SetColor(input[j], Color.Blue); NodeServices.DoEvent(); NodeServices.Sleep(NodeServices.timeSleep); SelectLine(11); NodeServices.Sleep(NodeServices.timeSleep); if (i <= j) { SelectLine(13); NodeServices.Sleep(NodeServices.timeSleep); if (i < j) { SelectLine(14); NodeServices.Swap(ref input[i], ref input[j]); } NodeServices.SetColor(input[i], color); NodeServices.SetColor(input[j], color); SelectLine(15); i++; if (i < input.Length) { iLabel.Location = new Point(input[i].img.Location.X, iLabel.Location.Y); iLabel.Text = "i = " + i; NodeServices.SetColor(input[i], Color.Orange); } NodeServices.Sleep(NodeServices.timeSleep); SelectLine(16); j--; if (j >= 0) { jLabel.Location = new Point(input[j].img.Location.X, jLabel.Location.Y); jLabel.Text = "j = " + j; NodeServices.SetColor(input[j], Color.Pink); } NodeServices.Sleep(NodeServices.timeSleep); } } NodeServices.Sleep(NodeServices.timeSleep); for (int u = left; u <= right; u++) { input[u].img.BackColor = color; } SelectLine(19); NodeServices.Sleep(NodeServices.timeSleep); Quicksort_(input, left, j); SelectLine(20); NodeServices.Sleep(NodeServices.timeSleep); Quicksort_(input, i, right); SelectLine(21); NodeServices.Sleep(NodeServices.timeSleep); }
public void Start(Node[] listNode) { iLabel = CreateLabel("i", Color.Orange); jLabel = CreateLabel("j", Color.Pink); xLabel = CreateLabel("x", Color.Blue); parent.Controls.Add(iLabel); parent.Controls.Add(jLabel); parent.Controls.Add(xLabel); Clear_Label(); for (int i = 0; SelectLine(2) && i < listNode.Length; i++) { NodeServices.SetColor(listNode[i], Color.Orange); iLabel.Location = new Point(listNode[i].img.Location.X, listNode[i].img.Location.Y - 30); iLabel.Text = "i = " + i; NodeServices.Sleep(NodeServices.timeSleep); SelectLine(4); int x = i; xLabel.Location = new Point(listNode[x].img.Location.X, listNode[x].img.Location.Y + 50 + 10); xLabel.Text = "x = " + x; NodeServices.Sleep(NodeServices.timeSleep); for (int j = i + 1; SelectLine(5) && j < listNode.Length; j++) { NodeServices.SetColor(listNode[j], Color.Pink); jLabel.Location = new Point(listNode[j].img.Location.X, listNode[j].img.Location.Y - 30); jLabel.Text = "j = " + j; NodeServices.Sleep(NodeServices.timeSleep); SelectLine(6); NodeServices.Sleep(NodeServices.timeSleep); if (listNode[x].n > listNode[j].n) { if (x != i) { NodeServices.SetColor(listNode[x], NodeServices.DefaultColor); } SelectLine(7); x = j; NodeServices.SetColor(listNode[x], Color.Blue); xLabel.Location = new Point(listNode[x].img.Location.X, listNode[x].img.Location.Y + 50 + 10); xLabel.Text = "x = " + x; NodeServices.Sleep(NodeServices.timeSleep); } else { NodeServices.SetColor(listNode[j], NodeServices.DefaultColor); } } NodeServices.Sleep(NodeServices.timeSleep); SelectLine(8); NodeServices.Sleep(NodeServices.timeSleep); if (x != i) { SelectLine(9); NodeServices.Swap(ref listNode[i], ref listNode[x]); NodeServices.SetColor(listNode[x], NodeServices.DefaultColor); } NodeServices.SetColor(listNode[i], Color.Green); } NodeServices.Sleep(NodeServices.timeSleep); SelectLine(11); NodeServices.Sleep(NodeServices.timeSleep); }
public void Start(Node[] listNode) { xLabel = CreateLabel("x: ", Color.Transparent); xLabel.Location = new Point(0, 120); parent.Controls.Add(xLabel); posLabel = CreateLabel("pos", Color.Gray); posLabel.Location = new Point(1500, 1500); posLabel.Size = new Size(50, 20); posLabel.Font = new Font("Arial", 10, FontStyle.Bold); parent.Controls.Add(posLabel); int x; Node temp; NodeServices.SetColor(listNode[0], Color.Green); SelectLine(2); NodeServices.Sleep(NodeServices.timeSleep); for (int i = 1; SelectLine(3) && i < listNode.Length; i++) { NodeServices.SetColor(listNode[i], Color.Orange); NodeServices.Sleep(NodeServices.timeSleep); Point locationEmpty = new Point(listNode[i].img.Location.X, listNode[i].img.Location.Y); while (SelectLine(5) && listNode[i].img.Location.Y > 120) { listNode[i].img.Location = new Point(listNode[i].img.Location.X, listNode[i].img.Location.Y - 1); NodeServices.Sleep(NodeServices.delay); } NodeServices.Sleep(11); temp = listNode[i]; x = i - 1; posLabel.Location = new Point(listNode[x].img.Location.X, listNode[x].img.Location.Y - 30); listCode.SelectedIndex = 6; NodeServices.Sleep(NodeServices.timeSleep); while (SelectLine(7) && x >= 0 && listNode[x].n > temp.n) { NodeServices.Sleep(NodeServices.timeSleep); Point xLocation = listNode[x].img.Location; SelectLine(9); while (listNode[x].img.Location.X < locationEmpty.X) { listNode[x].img.Location = new Point(listNode[x].img.Location.X + 1, listNode[x].img.Location.Y); NodeServices.Sleep(NodeServices.delay); } NodeServices.Sleep(11); locationEmpty = xLocation; listNode[x + 1] = listNode[x]; SelectLine(10); x--; if (x >= 0) { posLabel.Location = new Point(listNode[x].img.Location.X, listNode[x].img.Location.Y - 30); } else { posLabel.Location = new Point(0, NodeServices.Ynode - 30); } NodeServices.Sleep(NodeServices.timeSleep); } NodeServices.Sleep(NodeServices.timeSleep); SelectLine(12); while (temp.img.Location.X != locationEmpty.X) { if (temp.img.Location.X > locationEmpty.X) { temp.img.Location = new Point(temp.img.Location.X - 1, temp.img.Location.Y); NodeServices.Sleep(NodeServices.delay); } else { temp.img.Location = new Point(temp.img.Location.X + 1, temp.img.Location.Y); NodeServices.Sleep(NodeServices.delay); } } while (temp.img.Location.Y != locationEmpty.Y) { temp.img.Location = new Point(temp.img.Location.X, temp.img.Location.Y + 1); NodeServices.Sleep(NodeServices.delay); } NodeServices.Sleep(11); listNode[x + 1] = temp; NodeServices.SetColor(listNode[x + 1], Color.Green); } SelectLine(14); NodeServices.Sleep(NodeServices.timeSleep); }