using System;
class BinarySearchExample
{
static int BinarySearch(int[] arr, int target)
{
int left = 0;
int right = arr.Length - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
// Kiểm tra xem phần tử ở giữa có phải là target hay không
if (arr[mid] == target)
{
return mid; // Trả về chỉ số của target nếu nó được tìm thấy
}
// Nếu target nằm ở bên trái phần tử giữa, thu hẹp phạm vi tìm kiếm sang bên trái
if (arr[mid] > target)
{
right = mid - 1;
}
// Nếu target nằm ở bên phải phần tử giữa, thu hẹp phạm vi tìm kiếm sang bên phải
else
{
left = mid + 1;
}
}
return -1; // Trả về -1 nếu target không được tìm thấy trong mảng
}
public static void Main()
{
int[] sortedArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int target = 6;
int result = BinarySearch(sortedArray, target);
if (result != -1)
{
Console.WriteLine($"Phần tử {target} được tìm thấy tại chỉ số {result}.");
}
else
{
Console.WriteLine($"Phần tử {target} không tồn tại trong mảng.");
}
}
}
Dưới đây là mô tả chi tiết cho thuật toán tìm kiếm nhị phân được triển khai trong đoạn code C#:
- Khởi tạo biến
leftvàright:leftlà chỉ số đầu tiên của mảng (0).rightlà chỉ số cuối cùng của mảng (arr.Length - 1).
- Lặp while:
- Trong mỗi lần lặp, tính chỉ số trung bình
midcủaleftvàright. - So sánh giá trị ở chỉ số
midvớitarget.
- Trong mỗi lần lặp, tính chỉ số trung bình
- Kiểm tra giá trị ở chỉ số
mid:- Nếu
arr[mid]bằngtarget, trả vềmidvì phần tử đã được tìm thấy. - Nếu
arr[mid]lớn hơntarget, điều này có nghĩa làtargetcó thể nằm ở bên trái, nên thu hẹp phạm vi tìm kiếm bằng cách đặtright = mid - 1. - Nếu
arr[mid]nhỏ hơntarget, điều này có nghĩa làtargetcó thể nằm ở bên phải, nên thu hẹp phạm vi tìm kiếm bằng cách đặtleft = mid + 1.
- Nếu
- Lặp lại cho đến khi
leftlớn hơnright:- Nếu
lefttrở nên lớn hơnright, có nghĩa làtargetkhông tồn tại trong mảng và thoát khỏi vòng lặp.
- Nếu
- Trả về -1 nếu không tìm thấy:
- Nếu vòng lặp kết thúc mà không tìm thấy
target, trả về -1 để biểu thị rằng phần tử không tồn tại trong mảng.
- Nếu vòng lặp kết thúc mà không tìm thấy
- Trong hàm
Main:- Khởi tạo một mảng đã sắp xếp
sortedArrayvà một giá trị cần tìmtarget. - Gọi hàm
BinarySearchđể tìm kiếmtargettrongsortedArray. - In ra kết quả tương ứng dựa trên giá trị trả về từ hàm
BinarySearch.
- Khởi tạo một mảng đã sắp xếp

