Sự khác biệt giữa Tìm kiếm tuyến tính và Tìm kiếm nhị phân
NộI Dung
Tìm kiếm tuyến tính và tìm kiếm nhị phân là hai phương thức được sử dụng trong mảng cho đang tìm kiếm các yếu tố. Tìm kiếm là một quá trình tìm kiếm một yếu tố trong danh sách các yếu tố được lưu trữ theo bất kỳ thứ tự hoặc ngẫu nhiên.
Sự khác biệt chính giữa tìm kiếm tuyến tính và tìm kiếm nhị phân là tìm kiếm nhị phân mất ít thời gian hơn để tìm kiếm một phần tử từ danh sách các phần tử được sắp xếp. Vì vậy, suy ra rằng hiệu quả của phương pháp tìm kiếm nhị phân lớn hơn tìm kiếm tuyến tính.
Một điểm khác biệt giữa hai điều này là có một điều kiện tiên quyết cho tìm kiếm nhị phân, tức là, các yếu tố phải là đã sắp xếp trong khi trong tìm kiếm tuyến tính không có điều kiện tiên quyết như vậy. Mặc dù cả hai phương pháp tìm kiếm đều sử dụng các kỹ thuật khác nhau được thảo luận dưới đây.
- Biểu đồ so sánh
- Định nghĩa
- Sự khác biệt chính
- Phần kết luận
Biểu đồ so sánh
Cơ sở để so sánh | Tìm kiếm tuyến tính | Tìm kiếm nhị phân |
---|---|---|
Độ phức tạp thời gian | TRÊN, BẬT) | O (nhật ký 2 VIẾT SAI RỒI) |
Thời gian tốt nhất | Phần tử thứ nhất O (1) | Phần tử trung tâm O (1) |
Điều kiện tiên quyết cho một mảng | Không yêu cầu | Mảng phải theo thứ tự sắp xếp |
Trường hợp xấu nhất cho số lượng phần tử N | N so sánh là bắt buộc | Có thể kết luận chỉ sau khi đăng nhập2 N so sánh |
Có thể được thực hiện trên | Danh sách mảng và liên kết | Không thể được thực hiện trực tiếp trên danh sách liên kết |
Thao tác chèn | Dễ dàng chèn vào cuối danh sách | Yêu cầu xử lý để chèn tại vị trí thích hợp của nó để duy trì một danh sách được sắp xếp. |
Loại thuật toán | Lặp đi lặp lại trong tự nhiên | Chia rẽ và chinh phục trong tự nhiên |
Hữu ích | Dễ sử dụng và không cần bất kỳ yếu tố nào. | Dù sao thuật toán và các yếu tố phức tạp nên được tổ chức theo thứ tự. |
Dòng mã | Ít hơn | Hơn |
Định nghĩa của tìm kiếm tuyến tính
Trong tìm kiếm tuyến tính, từng phần tử của một mảng được truy xuất từng cái một theo thứ tự logic và kiểm tra xem nó có phải là phần tử mong muốn hay không. Một tìm kiếm sẽ không thành công nếu tất cả các yếu tố được truy cập và không tìm thấy yếu tố mong muốn. Trong trường hợp xấu nhất, số lượng trường hợp trung bình chúng ta có thể phải quét một nửa kích thước của mảng (n / 2).
Do đó, tìm kiếm tuyến tính có thể được định nghĩa là kỹ thuật đi qua mảng một cách tuần tự để xác định vị trí của mục đã cho. Chương trình được đưa ra dưới đây minh họa việc tìm kiếm một phần tử của mảng bằng tìm kiếm.
Hiệu quả tìm kiếm tuyến tính
Tiêu thụ thời gian hoặc số lượng so sánh được thực hiện khi tìm kiếm một bản ghi trong bảng tìm kiếm xác định hiệu quả của kỹ thuật. Nếu bản ghi mong muốn có mặt ở vị trí đầu tiên của bảng tìm kiếm, thì chỉ có một so sánh được thực hiện. Khi bản ghi mong muốn là bản ghi cuối cùng, thì n phải so sánh. Nếu bản ghi được trình bày ở đâu đó trong bảng tìm kiếm, trung bình, số lượng so sánh sẽ là (n + 1/2). Hiệu quả trường hợp xấu nhất của kỹ thuật này là O (n) là viết tắt của thứ tự thực hiện.
Chương trình C để tìm kiếm một yếu tố với kỹ thuật tìm kiếm tuyến tính.
#inc loại Tìm kiếm nhị phân là một thuật toán cực kỳ hiệu quả. Kỹ thuật tìm kiếm này tiêu tốn ít thời gian hơn trong việc tìm kiếm mục đã cho trong các so sánh tối thiểu có thể. Để thực hiện tìm kiếm nhị phân, đầu tiên, chúng ta phải sắp xếp các phần tử mảng. Logic đằng sau kỹ thuật này được đưa ra dưới đây: Có ba trường hợp có thể phát sinh: Lặp lại các bước tương tự cho đến khi một yếu tố được tìm thấy hoặc cạn kiệt trong khu vực tìm kiếm. Trong thuật toán này, mỗi khi diện tích tìm kiếm giảm. Do đó, số lượng so sánh nhiều nhất là log (N + 1). Kết quả là, nó là một thuật toán hiệu quả khi so sánh với tìm kiếm tuyến tính, nhưng mảng phải được sắp xếp trước khi thực hiện tìm kiếm nhị phân. Chương trình C để tìm một yếu tố với kỹ thuật tìm kiếm nhị phân. #inc loại Cả hai thuật toán tìm kiếm tuyến tính và nhị phân có thể hữu ích tùy thuộc vào ứng dụng. Khi một mảng là cấu trúc dữ liệu và các phần tử được sắp xếp theo thứ tự được sắp xếp, thì tìm kiếm nhị phân được ưu tiên cho nhanh chóngđang tìm kiếm. Nếu danh sách được liên kết là cấu trúc dữ liệu bất kể các phần tử được sắp xếp như thế nào, tìm kiếm tuyến tính được chấp nhận do không có khả năng thực hiện trực tiếp thuật toán tìm kiếm nhị phân. Thuật toán tìm kiếm nhị phân điển hình không thể được sử dụng cho danh sách được liên kết vì danh sách được liên kết có bản chất động và không biết phần tử ở giữa thực sự được gán ở đâu. Do đó, có một yêu cầu thiết kế biến thể của thuật toán tìm kiếm nhị phân cũng có thể hoạt động trên danh sách được liên kết vì tìm kiếm nhị phân thực hiện nhanh hơn so với tìm kiếm tuyến tính.Định nghĩa tìm kiếm nhị phân
Phần kết luận