/// <summary>
/// 查找集合
/// </summary>
public class SelectAlgorithm : Singleton<SelectAlgorithm> {
#region 二分查找
/// <summary>
/// 二分查找迭代算法(时间复杂度为O(log2n))
/// </summary>
/// <param name="num">目标值</param>
/// <param name="list">查看集合</param>
/// <returns>返回索引</returns>
public int BSearch2(int num, List<int> list)
{
int mid;
int low = 0;
int high = list.Count - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (list[mid] > num)
high = mid - 1;
else if (list[mid] < num)
low = mid + 1;
else
return mid;
}
return -1;
}
/// <summary>
/// 二分查找递归算法(时间复杂度为O(log2n))
/// </summary>
/// <param name="num">目标值</param>
/// <param name="list">查看集合</param>
/// <param name="low">起始索引</param>
/// <param name="high">结束索引</param>
/// <returns>返回索引</returns>
public int BSearch2(int num, List<int> list, int low, int high)
{
int mid;
if (low <= high)
{
mid = (low + high) / 2;
if (list[mid] > num)
return BSearch2(num, list, low, mid - 1);
else if (list[mid] < num)
return BSearch2(num, list, mid + 1, high);
else
return mid;
}
return -1;
}
#endregion
}
/// 查找集合
/// </summary>
public class SelectAlgorithm : Singleton<SelectAlgorithm> {
#region 二分查找
/// <summary>
/// 二分查找迭代算法(时间复杂度为O(log2n))
/// </summary>
/// <param name="num">目标值</param>
/// <param name="list">查看集合</param>
/// <returns>返回索引</returns>
public int BSearch2(int num, List<int> list)
{
int mid;
int low = 0;
int high = list.Count - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (list[mid] > num)
high = mid - 1;
else if (list[mid] < num)
low = mid + 1;
else
return mid;
}
return -1;
}
/// <summary>
/// 二分查找递归算法(时间复杂度为O(log2n))
/// </summary>
/// <param name="num">目标值</param>
/// <param name="list">查看集合</param>
/// <param name="low">起始索引</param>
/// <param name="high">结束索引</param>
/// <returns>返回索引</returns>
public int BSearch2(int num, List<int> list, int low, int high)
{
int mid;
if (low <= high)
{
mid = (low + high) / 2;
if (list[mid] > num)
return BSearch2(num, list, low, mid - 1);
else if (list[mid] < num)
return BSearch2(num, list, mid + 1, high);
else
return mid;
}
return -1;
}
#endregion
}