Thuật toán tìm kiếm nhị phân trong C#

Lập trình website
Tìm kiếm nhị phân là một thuật toán hiệu quả để tìm kiếm một phần tử trong một mảng đã được sắp xếp. Dưới đây là một ví dụ về cách triển khai thuật toán tìm kiếm nhị phân trong C#:
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#:

  1. Khởi tạo biến leftright:
    • 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).
  2. Lặp while:
    • Trong mỗi lần lặp, tính chỉ số trung bình mid của leftright.
    • So sánh giá trị ở chỉ số mid với target.
  3. Kiểm tra giá trị ở chỉ số mid:
    • Nếu arr[mid] bằng target, trả về mid vì phần tử đã được tìm thấy.
    • Nếu arr[mid] lớn hơn target, đ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 đặt right = mid - 1.
    • Nếu arr[mid] nhỏ hơn target, đ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 đặt left = mid + 1.
  4. Lặp lại cho đến khi left lớn hơn right:
    • Nếu left trở nên lớn hơn right, có nghĩa là target không tồn tại trong mảng và thoát khỏi vòng lặp.
  5. 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.
  6. 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ìm target.
    • Gọi hàm BinarySearch để tìm kiếm target trong sortedArray.
    • In ra kết quả tương ứng dựa trên giá trị trả về từ hàm BinarySearch.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *