Files
Fishing2/Assets/Scripts/Model/Utils/AlgorithmUtils.cs
2025-08-29 09:11:08 +08:00

53 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
namespace NBF
{
public static class AlgorithmUtils
{
#region
public static void QuickSortRecursive<T>(IList<T> dataList, int left, int right, Comparison<T> comparer)
{
if (dataList == null)
throw new ArgumentNullException();
if (comparer == null)
throw new ArgumentNullException();
if (left >= right)
return;
int mid = QuickSortPatition(dataList, left, right, comparer);
QuickSortRecursive(dataList, left, mid - 1, comparer);
QuickSortRecursive(dataList, mid + 1, right, comparer);
}
private static int QuickSortPatition<T>(IList<T> dataList, int left, int right, Comparison<T> comparer)
{
int j = left;
int i = j - 1;
T equipKey = dataList[right]; //基准元素
for (; j < right; ++j)
{
if (comparer(dataList[j], equipKey) < 0)
{
SwapData(dataList, j, ++i);
}
}
//把right交换到中间
T t = dataList[right];
dataList[right] = dataList[++i];
dataList[i] = t;
return i;
}
private static void SwapData<T>(IList<T> dataList, int x, int y)
{
T tmp = dataList[x];
dataList[x] = dataList[y];
dataList[y] = tmp;
}
#endregion
}
}