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
left
vàright
:left
là chỉ số đầu tiên của mảng (0).right
là 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
mid
củaleft
vàright
. - So sánh giá trị ở chỉ số
mid
vớ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ềmid
vì phần tử đã được tìm thấy. - Nếu
arr[mid]
lớn hơntarget
, điều này có nghĩa làtarget
có 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àtarget
có 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
left
lớn hơnright
:- Nếu
left
trở nên lớn hơnright
, có nghĩa làtarget
khô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
sortedArray
và một giá trị cần tìmtarget
. - Gọi hàm
BinarySearch
để tìm kiếmtarget
trongsortedArray
. - 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