搜索算法
- 1. Searching for Minimum and Maximum Values
- //这个太简单,不多说,直接贴代码。
- static int FindMin(int[] array)
- {
- var min = array[0];
- foreach (var i in array)
- {
- if (i < min) min = i;
- }
- return min;
- }
- static int FindMax(int[] array)
- {
- var max = array[0];
- foreach (var i in array)
- {
- if (i > max) max = i;
- }
- return max;
- }
- static void Main(string[] args)
- {
- var array = new[] { 3, 7, 6, 5, 8, 4, 9, 2, 0, 1 };
- Console.WriteLine(FindMin(array));
- Console.WriteLine(FindMax(array));
- }
- 2. Binary Search
- //这个搜索算法比较常用,不过它有个前提条件就是集合必须是排序过的。将集合不断切割成左右两份,通过判断中间值来缩小搜索范围。
- //举例来说:
- 0,1,2,3,4,5,6,7,8,9 -> 要搜索 8 的索引位置。
- 第一次: [0,1,2,3] [4] [5,6,7,8,9] ------ 8 > 4,范围缩小到右端。
- 第二次: [5,6] [7] [8,9] ------ 8 > 7,范围缩小到右端。
- 第三次: [8] [9],完成搜索。
- static int BinarySearch(int[] array, int value)
- {
- var lower = 0;
- var upper = array.Length - 1;
- while (lower <= upper)
- {
- var middle = (lower + upper) / 2;
- if (array[middle] == value)
- return middle;
- else if (array[middle] < value)
- lower = middle + 1;
- else
- upper = middle - 1;
- }
- return -1;
- }
- static void Main(string[] args)
- {
- var array = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- Console.WriteLine(BinarySearch(array, 8));
- }
- 当然,我们可以用递归来替代循环。
- static int BinarySearch(int[] array, int lower, int upper, int value)
- {
- if (lower > upper) return -1;
- var middle = (lower + upper) / 2;
- if (array[middle] == value)
- return middle;
- else if (array[middle] < value)
- return BinarySearch(array, middle + 1, upper, value);
- else
- return BinarySearch(array, lower, middle - 1, value);
- }
- static void Main(string[] args)
- {
- var array = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- Console.WriteLine(BinarySearch(array, 0, array.Length - 1, 8));
- }
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · .NETCORE 依赖注入服务生命周期
- · asp.net zero改mysql
- · .NET5面试汇总
- · .Net连接Mysql数据库的Convert Zero Datetime日期问题
- · vue使用element-ui中的Message 、MessageBox 、Notification
- · Asp.Net Core Filter 深入浅出的那些事-AOP
- · docker单节点启动consul
- · .NET Core使用Nlog记录日志
- · .netcore3返回JOSN首字母大写
- · .Net Core2.2升级到3.1
- · linux下dotnet restore报SSL证书错误
- · MSB4019: The imported project “Microsoft.Cpp.Default.props” was not found