/// <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(); }
/// <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(); }
/// <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(); }
/// <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(); }
/// <summary> /// ソート /// </summary> public async override void Sort() { int[] temp = new int[Array.Length]; await Sort(Array, temp, 0, Array.Length - 1); SortEnd?.Invoke(); }
/// <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(); }
/// <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(); }
/// <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(); }
/// <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(); }
/// <summary> /// ソート /// </summary> public async override void Sort() { await Sort(Array, 0, Array.Length - 1); SortEnd?.Invoke(); }