Beispiel #1
0
    /// <summary>
    /// ソート
    /// </summary>
    public override async void Sort()
    {
        int j;
        int interval = Global.Length;

        while (true)
        {
            // 適当な感覚で挿入ソートを行う
            interval /= 2;
            interval  = (interval <= 1 ? 1 : interval);

            for (int i = 0; i < Global.Length; i += interval)
            {
                j = i;
                while ((j > 0) && (Array[j - 1] < Array[j]))
                {
                    await Task.Delay(Global.WaitTime);

                    Swap(j - 1, j);
                    j--;
                }
            }
            if (interval == 1)
            {
                break;
            }
        }
        SortEnd?.Invoke();
    }
Beispiel #2
0
    /// <summary>
    /// ソート
    /// </summary>
    public override async void Sort()
    {
        int next = 0;

        for (int i = 0; i < Global.Length - 1; i++)
        {
            // 順に比較
            next = i + 1;
            if (Array[i] < Array[next])
            {
                await Task.Delay(Global.WaitTime);

                Swap(i, next);

                // 逆順で比較する
                for (int j = i; j > 0; j--)
                {
                    int back = j - 1;
                    if (Array[j] > Array[back])
                    {
                        await Task.Delay(Global.WaitTime);

                        Swap(j, back);
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
        SortEnd?.Invoke();
    }
Beispiel #3
0
    /// <summary>
    /// ソート
    /// </summary>
    public override async void Sort()
    {
        int  next  = 0;
        bool isEnd = false;

        while (!isEnd)
        {
            isEnd = true;
            for (int i = 0; i < Global.Length - 1; i++)
            {
                next = i + 1;
                if (Array[i] < Array[next])
                {
                    await Task.Delay(Global.WaitTime);

                    Swap(i, next);
                    isEnd = false;
                }
            }

            for (int i = Global.Length - 1; i < 0; i++)
            {
                next = i - 1;
                if (Array[i] < Array[next])
                {
                    await Task.Delay(Global.WaitTime);

                    Swap(i, next);
                    isEnd = false;
                }
            }
        }
        SortEnd?.Invoke();
    }
Beispiel #4
0
    /// <summary>
    /// ソート
    /// </summary>
    public override async void Sort()
    {
        int  max = 0, selected = 0;
        bool isChange = false;

        for (int i = 0; i < Global.Length - 1; i++)
        {
            isChange = false;
            max      = Array[i];
            selected = i;

            for (int j = i; j < Global.Length; j++)
            {
                if (max < Array[j])
                {
                    max      = Array[j];
                    selected = j;
                    isChange = true;
                }
            }
            if (isChange)
            {
                await Task.Delay(Global.WaitTime);

                Swap(i, selected);
            }
        }
        SortEnd?.Invoke();
    }
Beispiel #5
0
    /// <summary>
    /// ソート
    /// </summary>
    public async override void Sort()
    {
        int[] temp = new int[Array.Length];
        await Sort(Array, temp, 0, Array.Length - 1);

        SortEnd?.Invoke();
    }
Beispiel #6
0
    /// <summary>
    /// ソート
    /// </summary>
    public override async void Sort()
    {
        List <int>[] tmp = new List <int> [Global.Length];
        for (int i = 0; i < Global.Length; i++)
        {
            tmp[i] = new List <int>();
        }

        for (int i = 0; i < Global.Length; i++)
        {
            tmp[Array[i]].Add(Array[i]);
        }

        int index = 0;

        for (int i = 0; i < Global.Length; i++)
        {
            for (int j = 0; j < tmp[i].Count; j++)
            {
                await Task.Delay(Global.WaitTime);

                Change(index, tmp[i][j]);
                index++;
            }
        }
        SortEnd?.Invoke();
    }
Beispiel #7
0
    /// <summary>
    /// ソート
    /// </summary>
    public override async void Sort()
    {
        int j;

        for (int i = 0; i < Global.Length; i++)
        {
            j = i;
            while ((j > 0) && (Array[j - 1] < Array[j]))
            {
                await Task.Delay(Global.WaitTime);

                Swap(j - 1, j);
                j--;
            }
        }
        SortEnd?.Invoke();
    }
Beispiel #8
0
    /// <summary>
    /// ソート
    /// </summary>
    public override async void Sort()
    {
        List <int>[] tmp = new List <int> [Global.Length];
        for (int i = 0; i < Global.Length; i++)
        {
            tmp[i] = new List <int>();
        }

        for (int i = 0; i < Global.Length; i++)
        {
            tmp[i].Add(Array[i]);
        }

        await Sort(tmp, 10);

        SortEnd?.Invoke();
    }
Beispiel #9
0
    /// <summary>
    /// ソート
    /// </summary>
    public override async void Sort()
    {
        int  next = 0, interval = (int)(Global.Length / 1.3f);
        bool isEnd = false;

        while (!isEnd)
        {
            isEnd = true;
            for (int i = 0; i <= Global.Length - interval - 1; i++)
            {
                next = i + interval;
                if (Array[i] < Array[next])
                {
                    await Task.Delay(Global.WaitTime);

                    Swap(i, next);
                    isEnd = false;
                }
            }
            interval = (int)(interval / 1.3f);
            interval = interval <= 0 ? 1 : interval;
        }
        SortEnd?.Invoke();
    }
Beispiel #10
0
    /// <summary>
    /// ソート
    /// </summary>
    public async override void Sort()
    {
        await Sort(Array, 0, Array.Length - 1);

        SortEnd?.Invoke();
    }