// --------------------------------------------------------------------------------------------------------------------
// <copyright company="Chimomo's Company" file="Program.cs">
// Respect the work.
// </copyright>
// <summary>
// The binary search (recursive).
// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace CSharpLearning
{
using System;
/// <summary>
/// The program.
/// </summary>
internal class Program
{
/// <summary>
/// The binary search (recursive).
/// 在下界为low,上界为high的有序数组a中折半查找数据元素x(递归)。
/// </summary>
/// <param name="a">
/// The a.
/// </param>
/// <param name="x">
/// The x.
/// </param>
/// <param name="low">
/// The low.
/// </param>
/// <param name="high">
/// The high.
/// </param>
/// <returns>
/// The <see cref="int"/>.
/// </returns>
public static int BinarySearch(int[] a, int x, int low, int high)
{
if (low > high)
{
return -1;
}
int mid = (low + high) / 2;
if (x == a[mid])
{
return mid;
}
return x < a[mid] ? BinarySearch(a, x, low, mid - 1) : BinarySearch(a, x, mid + 1, high);
}
/// <summary>
/// Entry point into console application.
/// </summary>
private static void Main()
{
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Console.WriteLine(BinarySearch(a, 6, 0, 9));
}
}
}
// Output:
/*
5
*/
时间复杂度:O(log2n)
// --------------------------------------------------------------------------------------------------------------------
// <copyright company="Chimomo's Company" file="Program.cs">
// Respect the work.
// </copyright>
// <summary>
// The binary search (not recursive).
// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace CSharpLearning
{
using System;
/// <summary>
/// The program.
/// </summary>
internal class Program
{
/// <summary>
/// The binary search (not recursive).
/// 在长度为n的有序数组a中查找值为key的元素(非递归)。
/// </summary>
/// <summary>
/// 在长度为n的数组a中查找值为key的元素。
/// </summary>
/// <param name="a">
/// The a.
/// </param>
/// <param name="key">
/// The key.
/// </param>
/// <param name="n">
/// The n.
/// </param>
/// <returns>
/// The <see cref="int"/>.
/// </returns>
public static int BinarySearch(int[] a, int key, int n)
{
int low = 0;
int high = n - 1;
while (low <= high)
{
int mid = (low + high) / 2;
if (a[mid] == key)
{
return mid;
}
if (a[mid] < key)
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
return -1;
}
/// <summary>
/// Entry point into console application.
/// </summary>
private static void Main()
{
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Console.WriteLine(BinarySearch(a, 6, 9));
}
}
}
// Output:
/*
5
*/
时间复杂度:O(log2n)
分享到:
相关推荐
C#实现 二分查找 折半查找 visual studio 2012开发环境 具有图形化界面
利用c#软件实现折半算法动态演示的实现,有具体的分析过程和算法代码
静态查找和动态查找 内查找和外查找 顺序查找又称线性查找(Sequential Search) 二叉查找算法:二分查找又称折半查找(Binary Search)
顺序查找表 二分查找表 折半查找表 二叉排序树 C#源代码 注意二叉排序树只实现了查找和插入算法,使用Visual Studio 2008开发
折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。 A 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束; B 如果某一特定元素大于或者小于中间...
5.3.1 折半查找算法 141 5.3.2 折半查找操作示例 142 5.4 数据结构中的查找算法 145 5.4.1 顺序表结构中的查找算法 145 5.4.2 链表结构中的查找算法 148 5.4.3 树结构中的查找算法 151 5.4.4 图结构中的查找...
这是本人淘宝买的,先给有需要的人,c#和access
8.2.2 有序表的折半查找...........239 8.2.3 索引查找...........................242 8.3 动态查找表...................................243 8.4 哈希表...252 8.4.1 哈希表的基本概念...........252 8.4.2 常用...
第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的算法。 第1章绪论................................................................................................................
第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的算法。 第1章绪论.................................................................................................................
第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的算法。 第1章绪论.................................................................................................................
1.2 算法...........................................................................................................................4 1.2.1算法的特性.......................................................
1.2 算法...........................................................................................................................4 1.2.1算法的特性.....................................................
1.2 算法...........................................................................................................................4 1.2.1算法的特性.......................................................
第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的算法。 第1章绪论................................................................................................................