internal class Program
{
static void Main(string[] args)
{
var n = 50;
var random = new Random();
while (n-- > 0)
RandomTest(random);
Console.ReadLine();
}
static int SortedIndexOf(int[] nums, int value)
{
if (nums == null || value < nums[0] || value > nums[nums.Length - 1])
return -1;
return SortedIndexOfImpl(nums, 0, nums.Length, value);
}
static int SortedIndexOfImpl(int[] nums, int offset, int length, int value)
{
if (length == 0)
return -1;
if (nums[offset] == value)
return offset;
if (length == 1)
return -1;
int half = length / 2;
int mid = offset + half;
if (nums[mid] > value)
return SortedIndexOfImpl(nums, offset, half, value);
else if (nums[mid] == value)
return SortedIndexOfImpl(nums, offset + 1, half, value);
else
return SortedIndexOfImpl(nums, mid + 1, length - half - 1, value);
}
static void RandomTest(Random random)
{
var length = random.Next(1, 50);
var maxValue = length / 2 + 1;
var target = random.Next(maxValue);
var list = new List<int>(length);
while (length-- > 0)
list.Add(random.Next(maxValue));
list.Sort();
var groundTruth = list.IndexOf(target);
Console.WriteLine("SortedIndexOf([{0}], {1})", string.Join(",", list), target);
Console.WriteLine("Expected: {0}", groundTruth);
Console.WriteLine("+++++++++++++++++++++++++++++++++");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)