Exemplo n.º 1
0
        private void bgWorkerBubbleSort_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            //cập nhật giao diện thời gian thực xong chuyển đến hàm dowork
            StatusLocation st = e.UserState as StatusLocation;

            if (st == null)
            {
                return;                             //ko làm gì cả
            }
            if (st.movingTypes == MovingTypes.STOP) //nếu dừng tiến trình thì thay đổi giá trị của 2 nút trong mảng
            {
                Button tam = Mn[st.location2];
                Mn[st.location2] = Mn[st.location1];
                Mn[st.location1] = tam;
                return;
            }
            Button btn1 = Mn[st.location1];
            Button btn2 = Mn[st.location2];

            if (st.movingTypes == MovingTypes.UP_DOWN)
            {
                btn1.Top = btn1.Top + 1; //nút 1 đi lên
                btn2.Top = btn2.Top - 1; //nút 2 đi xuống
            }
            else if (st.movingTypes == MovingTypes.RIGHT_LEFT)
            {
                btn1.Left = btn1.Left - 1; //nút 1 qua phải
                btn2.Left = btn2.Left + 1; //nút 2 qua trái
            }
            else if (st.movingTypes == MovingTypes.DOWN_UP)
            {
                btn1.Top = btn1.Top - 1; //nút 1 đi xuống
                btn2.Top = btn2.Top + 1; //nút 2 đi lên
            }
        }
Exemplo n.º 2
0
        private void DiChuyenBubbleSort(int vt1, int vt2)
        {
            StatusLocation st = new StatusLocation();

            st.location1   = vt1;
            st.location2   = vt2;
            st.movingTypes = MovingTypes.UP_DOWN;

            for (int i = 0; i < HEIGHT; i++) //Di chuyen len xuong bang chieu cao height khoi tao ban dau
            {
                //đói số 1  là 0 , tức là ko quan tâm phần trăm chạy
                //các bạn tưởng tượng giống phần loading của game vưa load vào
                //ơ phần mềm mính để 0 là ko quan tâm đến nó
                //đói số 2 là mấy cái vị trí của nút
                bgWorkerBubbleSort.ReportProgress(0, st); //gọi hàm _ProgressChanged để cập nhât giao diện
                System.Threading.Thread.Sleep(15);
            }

            st.movingTypes = MovingTypes.RIGHT_LEFT;
            int WIDTH = Math.Abs(vt1 - vt2) * (SIZE + KhoangCachNut);

            for (int i = 0; i < WIDTH; i++)
            {
                bgWorkerBubbleSort.ReportProgress(0, st); //gọi hàm _ProgressChanged để cập nhât giao diện
                System.Threading.Thread.Sleep(15);
            }

            st.movingTypes = MovingTypes.DOWN_UP;
            for (int i = 0; i < HEIGHT; i++) //Di chuyen len xuong bang chieu cao height khoi tao ban dau
            {
                //đói số 1  là 0 , tức là ko quan tâm phần trăm chạy
                //các bạn tưởng tượng giống phần loading của game vưa load vào
                //ơ phần mềm mính để 0 là ko quan tâm đến nó
                //đói số 2 là mấy cái vị trí của nút
                bgWorkerBubbleSort.ReportProgress(0, st); //gọi hàm _ProgressChanged để cập nhât giao diện
                System.Threading.Thread.Sleep(15);
            }

            st.movingTypes = MovingTypes.STOP;
            bgWorkerBubbleSort.ReportProgress(0, st);
        }
Exemplo n.º 3
0
        private void BubbleSort(int[] m)
        {
            int            i, j;
            StatusLocation st = new StatusLocation();//khởi tạo vi trí st

            for (i = 0; i < M.Length; i++)
            {
                for (j = M.Length - 1; j > i; j--)
                {
                    if (M[j] < M[j - 1])
                    {
                        int tam = M[j];
                        M[j]     = M[j - 1];
                        M[j - 1] = tam;
                        System.Threading.Thread.Sleep(15);//delay cho nguoi dung xem  nut di chuyen
                        //tiep tuc tao ham di chuyen nut
                        DiChuyenBubbleSort(j, j - 1);
                    }
                }
            }
        }