首页 > 编程语言 >数据结构算法(一)之二分查找

数据结构算法(一)之二分查找

时间:2022-09-21 13:11:07浏览次数:63  
标签:二分 nums int random value length 查找 var 数据结构

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);

			//var actualResult = SortedIndexOf(list.ToArray(), target);

			Console.WriteLine("SortedIndexOf([{0}], {1})", string.Join(",", list), target);
			Console.WriteLine("Expected: {0}", groundTruth);
			//Console.WriteLine("Actual: {0}", actualResult);
            Console.WriteLine("+++++++++++++++++++++++++++++++++");

			//if (groundTruth != actualResult)
			//{
			//	throw new Exception("Assertion Failed");
			//}
		}

		//public static void Main()
		//{
		//	var n = 50;
		//	var random = new Random();
		//	while (n-- > 0)
		//		RandomTest(random);
		//}
	}

标签:二分,nums,int,random,value,length,查找,var,数据结构
From: https://www.cnblogs.com/Bo-H/p/16637611.html

相关文章

  • 数据结构
    设计并编程实现一个应用单链表存储结构的通信录管理系统。定义适当数据类型,设计并编写完成下列8项基本功能的C语言程序:[root@huhy~]#cattest.c/*一、功能要求:1.添加......
  • Java软件结构与数据结构 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1-aD4I1Fy1Q2j0DGbu-44ig点击这里获取提取码 ......
  • STL string的查找,比较,截取子串
    compare函数在>时返回1,<时返回-1,==时返回0。比较区分大小写,比较时参考字典顺序,排越前面的越小。大写的A比小写的a小。intcompare(conststring&s)const;//与字符串s......
  • Linux目录操作cp、mv与rmLinux查找文件(find、which)
    cp(复制)cp(copy)备份cp[选项]…源文件目标相当改名复制文件夹文件相当于改名字另存为cp[选项]...源文件...文件夹多个源文件只能复制到文件夹 选项: ......
  • 查找
    查找分为内查找和外查找。顺序表查找:线性表的顺序存储结构主要使用两种方法:顺序查找和二分查找。1)顺序查找:从表的一端开始,顺序扫描线性表,依次把扫描的记录和关键字比......
  • TMS320C28x数据结构
    来自《TMS320C28xOptimizingC_C++CompilerUser'sGuide》的章节6.4,文档编号:SPRU514R  ......
  • 数据结构算法与应用:C++语言描述(第2章 程序性能)
    目录2.1引言2.2空间复杂性(spaceComplexity)\(S_p(n)\)2.2.1空间复杂性的组成2.2.2举例2.3时间复杂性(timecomplexity)\(T(n)\)2.3.1时间复杂性的组成2.3.2操作计......
  • 数据结构算法与应用:C++语言描述(第2章 程序性能)
    目录2.1引言2.2空间复杂性(spaceComplexity)\(S_p(n)\)2.2.1空间复杂性的组成2.2.2举例2.3时间复杂性(timecomplexity)\(T(n)\)2.3.1时间复杂性的组成2.3.2操作计......
  • Java面向对象数据结构完全学习教程 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1m6FOQFqsjqYSbKXKs8zHjQ点击这里获取提取码 ......
  • centos根据端口号查找对应服务及对应安装位置
    背景:生产环境中,经常会碰到服务器上有很多的端口号,但是却不知道这些端口号对应的服务是在那个目录下的,是什么服务占用了这个端口。今天给大家分享一个方法,通过端口号找到对......