Ý tưởng của thuật toán:
Phép tìm kiếm nhị phân được thực hiện trên dãy khoá có thứ tự (xét dãy tăng dần):
a[0]<=a[1]<=a[2]<=...<=a[n-1]. Giá trị cần tìm x.
Chia đôi dãy khoá cần tìm kiếm. So sánh khoá giữa dãy với x, có 3 trường hợp xãy ra:
- Giá trị khoá này bằng x, tìm kiếm thành công
- Giá trị khoá này lớn hơn x, thì ta tiến hành tìm x với nữa bên trái của khoá này
- Giá trị khoá này nhỏ hơn x, thì ta tiến hành tìm x với nữa bên phải của khoá này
Trường hợp tìm kiếm thất bại khi dãy khoá cần tìm không có phần tử nào.
Cài đặt Thuật toán [code Turbo C\C++]:
/*Thuật toán tìm kiếm nhị phân không đệ quy*/
int BinarySearch(int x, int a[],int n) // Tìm khoá x trong dãy a1,a2…,an
{
int left =0; //Left trỏ về chỉ số đầu dãy
int right =n-1; //right trỏ về vị trí cuối dãy
int mid; // mid trỏ vào giữa dãy
int found = 0; //dùng để xác tìm thành công hay không (0: không tìm thấy, 1: tìm thấy)
while (left <= right && found==0){
mid = (left + right) / 2;//mid ở giữa dãy
if (a[mid]== x) //trường hợp tìm thấy dừng thuật toán
found = 1;
else
if (a[mid]<x)
left = mid +1; //xác định lại đoạn tìm tiếp theo là bên phải
else
right = mid -1; //xác định lại đoạn tìm tiếp theo là bên trái
}
return found;
}
/*Thuật toán tìm kiếm nhị phân đệ quy*/
int BinSearch(int[] a, int gt, int dau, int cuoi)
{
int i, j;
i = dau; j = cuoi;
if (i > j)
{
return -1; // không tìm thấy
}
int giua = (i + j) / 2;
if (gt == a[giua])
{
return giua; // tìm thấy
}
else if (gt < a[giua])
{
j = giua - 1;
return BinSearch(a, gt, dau, j);
}
else
{
i = giua + 1;
return BinSearch(a, gt, i, cuoi);
}
}
Thứ Tư, 5 tháng 3, 2014
Đăng ký:
Đăng Nhận xét (Atom)
Bài đăng phổ biến
-
Công cụ Đăng Ký Bản Quyền Sử Dụng Kế Toán Smart Pro ( 2.0 - 2.5 - 3.0) Video Hướng Dẫn Đăng Ký Bản Quyền Kế Toán Smart Pro (2.0 - 2.5 - 3.0)...
-
HTsoft POS .NET là phần mềm quản lý Kho-Bán hàng và Chăm sóc khách hàng chuyên nghiệp, áp dụng tốt cho nhiều lĩnh vực kinh doanh khác nhau ...
-
* lưu ý: tính năng này yêu cầu bạn phải có kết nối Internet khi sử dụng phần mềm. Bạn vui lòng thực hiện các bước sau để đăng ký dùng miễn p...
-
Đề bài: nhập 2 số nguyên dương a,b. Tính ước số chung lớn nhất và bội chung nhỏ nhất của a,b. Bài giải: Cách 1: #include <stdio.h> int...
-
Clover 3.0.386 - Tạo Tabs File Explorer cho Windows 8.1 http://www.softpedia.com/progDownload/Clover-EJIE-Download-220301.html
-
Phần mềm quản lý bán hàng TTV Sales là giải pháp giúp các doanh nghiệp quản lý các chuỗi cửa hàng, sản phẩm, nhân viên một cách có hệ thống ...
-
Đề bài: Trong kỳ thi tuyển, mỗi thí sinh sẽ trúng tuyển nếu điểm tổng kết của thí sinh đó lớn hơn hoặc bằng điểm chuẩn và không có môn nào đ...
-
Đề bài: nhập vào tử số, mẫu số (khác 0) của một phân số. Hãy rút gọn phân số này. Chú ý chọn dạng xuất thích hợp trong trường hợp mẫu số bằn...
-
Bổ sung vào các chức năng đã có ở hai phiên bản trước, phần mềm Quản lý gia phả phiên bản Advanced được nâng cấp thêm các tính năng nổi trội...
-
Có thể xài được nhưng cũng có thể không xài được nếu như chủ nhân đã đổi pass. Acc: hoanglinh1714 Pass: A01656101024LINH Acc: hieukenpt19999...
0 nhận xét:
Đăng nhận xét