C#中二分法查找的入门「代码介绍」

什么是二分法查找?

二分法查找是一种常用的查找算法,也被称为折半查找。它的原理很简单:对于一个有序数组,每次查找都取数组中间的元素与目标元素进行比较,根据比较结果缩小查找范围,最终找到目标元素的位置。

下面我们来看一下使用C#实现二分法查找的详细过程。

实现二分法查找的准备工作

在实现二分法查找之前,我们需要进行一些准备工作。

准备一个有序数组

我们需要准备一个有序数组来进行查找。这里我们先手动创建一个包含一定数量元素的有序数组:

int[] arr = new int[] { 1, 3, 4, 5, 7, 8, 10, 12 };

注意:一定要确保数组是有序的,否则二分法查找无法正确执行。如果数组不是有序的,可以调用数组的排序方法进行排序。

准备查找目标

我们需要准备要查找的目标元素,这里以查找数字7为例:

int target = 7;

实现二分法查找的代码

我们可以将二分法查找封装成一个方法,方便调用。

public static int BinarySearch(int[] arr, int target)

{

int left = 0; // 左侧指针

int right = arr.Length - 1; // 右侧指针

while (left <= right)

{

int mid = (left + right) / 2; // 计算中间位置

int guess = arr[mid]; // 取中间位置元素

if (guess == target) // 找到目标元素

{

return mid;

}

else if (guess < target) // 目标元素在右侧

{

left = mid + 1;

}

else // 目标元素在左侧

{

right = mid - 1;

}

}

return -1; // 没有找到目标元素

}

上面的代码使用了一个while循环,每次迭代都会缩小查找范围。循环终止的条件是左侧指针left大于右侧指针right。如果目标元素存在于数组中,将返回其位置,否则返回-1。

使用二分法查找数字7的位置

现在我们已经准备好了一个有序数组和要查找的目标元素,可以使用二分法查找目标元素的位置了。

int index = BinarySearch(arr, target);

if (index == -1)

{

Console.WriteLine("数组中不存在目标元素");

}

else

{

Console.WriteLine("目标元素在数组中的位置为:" + index);

}

运行以上代码,将输出“目标元素在数组中的位置为:4”,即数字7在数组中的下标为4。

总结

二分法查找是一种常用的查找算法,可以快速地在有序数组中找到目标元素。在C#中,可以轻松地封装二分法查找的方法,并使用简单的代码实现。

后端开发标签