コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: HeapSort.cs プロジェクト: quocpxd/Sort-Algorithm
        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();
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }