コード例 #1
0
        public OrderingEntity BubbleSort(int[] mainArray)
        {
            var entity = new OrderingEntity();

            entity.NumberList = new int[mainArray.Length];
            mainArray.CopyTo(entity.NumberList, 0);

            var time = Stopwatch.StartNew();

            #region Bubble

            int arraySize = entity.NumberList.Length;

            for (int i = arraySize - 1; i >= 1; i--)
            {
                for (int j = 0; j < i; j++)
                {
                    entity.Moves++;
                    if (entity.NumberList[j] > entity.NumberList[j + 1])
                    {
                        int aux = entity.NumberList[j];
                        entity.NumberList[j]     = entity.NumberList[j + 1];
                        entity.NumberList[j + 1] = aux;
                    }
                }
            }

            #endregion

            time.Stop();
            entity.Time = time.ElapsedMilliseconds;
            return(entity);
        }
コード例 #2
0
        public frmCompareOrderings(OrderingEntity entity)
        {
            InitializeComponent();

            _notOrdered = new int[entity.NumberList.Length];
            entity.NumberList.CopyTo(_notOrdered, 0);
        }
コード例 #3
0
        public OrderingEntity ShellSort(int[] mainArray)
        {
            var entity = new OrderingEntity();

            entity.NumberList = new int[mainArray.Length];
            mainArray.CopyTo(entity.NumberList, 0);

            var time = Stopwatch.StartNew();

            #region Shell

            int arraySize = entity.NumberList.Length;
            int j, value;
            int gap = 1;

            do
            {
                gap = 3 * gap + 1;
            } while (gap < arraySize);

            do
            {
                gap /= 3;
                for (int i = gap; i < arraySize; i++)
                {
                    value = entity.NumberList[i];
                    j     = i - gap;

                    while (j >= 0 && value < entity.NumberList[j])
                    {
                        entity.NumberList[j + gap] = entity.NumberList[j];
                        j -= gap;
                        entity.Moves++;
                    }
                    entity.NumberList[j + gap] = value;
                    entity.Moves++;
                }
                entity.Moves++;
            } while (gap > 1);

            #endregion

            time.Stop();
            entity.Time = time.ElapsedMilliseconds;

            return(entity);
        }
コード例 #4
0
        private async void MergeSort()
        {
            var entity = new OrderingEntity();

            entity.NumberList = new int[_notOrdered.Length];
            _notOrdered.CopyTo(entity.NumberList, 0);

            int start = 0, end = entity.NumberList.Length - 1;

            var time = Stopwatch.StartNew();
            await Task.Run(() => entity.Moves = _ordering.MergeSort(entity.NumberList, start, end));

            time.Stop();

            entity.Time = time.ElapsedMilliseconds;
            AlterLabelsInfo(lblMergeMoves, "text", entity.Moves.ToString());
            AlterLabelsInfo(lblMergeTime, "text", entity.Time.ToString() + " ms");
        }
コード例 #5
0
        public OrderingEntity InsertionSort(int[] mainArray)
        {
            var entity = new OrderingEntity();

            entity.NumberList = new int[mainArray.Length];
            mainArray.CopyTo(entity.NumberList, 0);

            var time = Stopwatch.StartNew();

            #region Insertion

            if (entity.NumberList.Length <= 1)
            {
                entity.Moves = 0;
                entity.Time  = time.ElapsedMilliseconds;
                return(entity);
            }

            int j, key;

            for (int i = 1; i < entity.NumberList.Length; i++)
            {
                j   = i - 1;
                key = entity.NumberList[i];
                entity.Moves++;

                while (j >= 0 && key < entity.NumberList[j])
                {
                    entity.NumberList[j + 1] = entity.NumberList[j];
                    j--;
                    entity.NumberList[j + 1] = key;
                    entity.Moves++;
                }
            }

            #endregion

            time.Stop();
            entity.Time = time.ElapsedMilliseconds;

            return(entity);
        }
コード例 #6
0
        public OrderingEntity SelectionSort(int[] mainArray)
        {
            var entity = new OrderingEntity();

            entity.NumberList = new int[mainArray.Length];
            mainArray.CopyTo(entity.NumberList, 0);

            var time = Stopwatch.StartNew();
            int minimum, aux;

            #region Selection

            for (int i = 0; i < entity.NumberList.Length - 1; i++)
            {
                minimum = i;

                for (int j = i; j < entity.NumberList.Length; j++)
                {
                    entity.Moves++;
                    if (entity.NumberList[j] < entity.NumberList[minimum])
                    {
                        minimum = j;
                    }
                }

                if (minimum != i)
                {
                    aux = entity.NumberList[minimum];
                    entity.NumberList[minimum] = entity.NumberList[i];
                    entity.NumberList[i]       = aux;
                    entity.Moves++;
                }
            }

            #endregion

            time.Stop();
            entity.Time = time.ElapsedMilliseconds;

            return(entity);
        }
コード例 #7
0
 public OrderingAlgorithms()
 {
     _entity = new OrderingEntity();
 }