vienphuongjonathan
New member
#binary Search, #C ++, #data Struct, #AlGorithM, #Programming ## Tìm kiếm nhị phân trong C ++
Tìm kiếm nhị phân là một thuật toán tìm kiếm tìm thấy vị trí của giá trị đích trong một mảng được sắp xếp.Nó hoạt động bằng cách liên tục chia mảng làm đôi cho đến khi tìm thấy giá trị mục tiêu.
Độ phức tạp của thời gian của tìm kiếm nhị phân là O (log n), trong đó n là kích thước của mảng.Điều này có nghĩa là thời gian chạy của thuật toán sẽ tăng lên logarit khi kích thước của mảng tăng.
Tìm kiếm nhị phân là một thuật toán rất hiệu quả để tìm kiếm các mảng được sắp xếp.Tuy nhiên, nó không thể được sử dụng để tìm kiếm các mảng chưa được phân loại.
### Triển khai trong C ++
Mã sau đây cho thấy cách thực hiện tìm kiếm nhị phân trong C ++:
`` `C ++
#include <Istream>
sử dụng không gian tên STD;
// một hàm để tìm vị trí của giá trị đích trong một mảng được sắp xếp
int nhị phân nghiên cứu (int mảng [], int n, int target) {
// 1. Khởi tạo các con trỏ trái và phải
int trái = 0;
int right = n - 1;
// 2. Vòng lặp cho đến khi con trỏ bên trái nhỏ hơn hoặc bằng con trỏ bên phải
while (trái <= phải) {
// 3. Tính toán phần tử giữa
int mid = (trái + phải) / 2;
// 4. Nếu phần tử giữa bằng giá trị đích, hãy trả về chỉ mục của phần tử giữa
if (mảng [mid] == target) {
trở lại giữa;
}
// 5. Nếu phần tử giữa nhỏ hơn giá trị đích, hãy cập nhật con trỏ bên trái
khác nếu (mảng [mid] <target) {
trái = mid + 1;
}
// 6. Nếu không, hãy cập nhật đúng con trỏ
khác {
Phải = giữa - 1;
}
}
// 7. Nếu không tìm thấy giá trị đích, hãy trả về -1
trả lại -1;
}
int main () {
// 1. Tạo một mảng được sắp xếp
int mảng [] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 2. Nhận kích thước của mảng
int n = sizeof (mảng) / sizeof (mảng [0]);
// 3. Nhận giá trị mục tiêu để tìm kiếm
Target int = 5;
// 4. Gọi chức năng tìm kiếm nhị phân để tìm giá trị đích
int index = BinarySearch (ARR, N, Target);
// 5. In chỉ mục của giá trị mục tiêu
cout << "Chỉ số của giá trị đích là:" << index << endl;
trả lại 0;
}
`` `
### Ví dụ
Sau đây là một ví dụ về cách tìm kiếm nhị phân có thể được sử dụng để tìm vị trí của số 5 trong mảng `[1, 2, 3, 4, 5, 6, 7, 8, 9]`:
1. Con trỏ bên trái được khởi tạo thành 0 và con trỏ bên phải được khởi tạo thành 8.
2. Phần tử giữa được tính là (0 + 8) / 2 = 4.
3. Phần tử giữa được so sánh với giá trị mục tiêu.Vì 4 không bằng 5, con trỏ bên trái được cập nhật lên 5.
4. Phần tử giữa được tính toán lại là (5 + 8) / 2 = 6.
5. Phần tử giữa được so sánh với giá trị mục tiêu.Vì 6 không bằng 5, con trỏ bên phải được cập nhật lên 5.
6. Phần tử giữa được tính toán lại là (5 + 5) / 2 = 5.
7. Phần tử giữa bằng giá trị đích, do đó, chỉ số của giá trị đích được trả về.
### Người giới thiệu
* [Tìm kiếm nhị phân trên Wikipedia] (Binary search algorithm - Wikipedia)
* [Tìm kiếm nhị phân trong hướng dẫn C ++] (https: //
=======================================
#binary search, #C++, #data structure, #AlGorithM, #Programming ## Binary Search in C++
Binary search is a search algorithm that finds the position of a target value in a sorted array. It works by repeatedly dividing the array in half until the target value is found.
The time complexity of binary search is O(log n), where n is the size of the array. This means that the algorithm's runtime will grow logarithmically as the size of the array increases.
Binary search is a very efficient algorithm for searching sorted arrays. However, it cannot be used to search unsorted arrays.
### Implementation in C++
The following code shows how to implement binary search in C++:
```c++
#include <iostream>
using namespace std;
// A function to find the position of a target value in a sorted array
int binarySearch(int arr[], int n, int target) {
// 1. Initialize the left and right pointers
int left = 0;
int right = n - 1;
// 2. Loop until the left pointer is less than or equal to the right pointer
while (left <= right) {
// 3. Calculate the middle element
int mid = (left + right) / 2;
// 4. If the middle element is equal to the target value, return the middle element's index
if (arr[mid] == target) {
return mid;
}
// 5. If the middle element is less than the target value, update the left pointer
else if (arr[mid] < target) {
left = mid + 1;
}
// 6. Otherwise, update the right pointer
else {
right = mid - 1;
}
}
// 7. If the target value is not found, return -1
return -1;
}
int main() {
// 1. Create a sorted array
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 2. Get the size of the array
int n = sizeof(arr) / sizeof(arr[0]);
// 3. Get the target value to search for
int target = 5;
// 4. Call the binary search function to find the target value
int index = binarySearch(arr, n, target);
// 5. Print the index of the target value
cout << "The index of the target value is: " << index << endl;
return 0;
}
```
### Example
The following is an example of how binary search can be used to find the position of the number 5 in the array `[1, 2, 3, 4, 5, 6, 7, 8, 9]`:
1. The left pointer is initialized to 0 and the right pointer is initialized to 8.
2. The middle element is calculated as (0 + 8) / 2 = 4.
3. The middle element is compared to the target value. Since 4 is not equal to 5, the left pointer is updated to 5.
4. The middle element is recalculated as (5 + 8) / 2 = 6.
5. The middle element is compared to the target value. Since 6 is not equal to 5, the right pointer is updated to 5.
6. The middle element is recalculated as (5 + 5) / 2 = 5.
7. The middle element is equal to the target value, so the index of the target value is returned.
### References
* [Binary Search on Wikipedia](https://en.wikipedia.org/wiki/Binary_search)
* [Binary Search in C++ Tutorial](https://
Tìm kiếm nhị phân là một thuật toán tìm kiếm tìm thấy vị trí của giá trị đích trong một mảng được sắp xếp.Nó hoạt động bằng cách liên tục chia mảng làm đôi cho đến khi tìm thấy giá trị mục tiêu.
Độ phức tạp của thời gian của tìm kiếm nhị phân là O (log n), trong đó n là kích thước của mảng.Điều này có nghĩa là thời gian chạy của thuật toán sẽ tăng lên logarit khi kích thước của mảng tăng.
Tìm kiếm nhị phân là một thuật toán rất hiệu quả để tìm kiếm các mảng được sắp xếp.Tuy nhiên, nó không thể được sử dụng để tìm kiếm các mảng chưa được phân loại.
### Triển khai trong C ++
Mã sau đây cho thấy cách thực hiện tìm kiếm nhị phân trong C ++:
`` `C ++
#include <Istream>
sử dụng không gian tên STD;
// một hàm để tìm vị trí của giá trị đích trong một mảng được sắp xếp
int nhị phân nghiên cứu (int mảng [], int n, int target) {
// 1. Khởi tạo các con trỏ trái và phải
int trái = 0;
int right = n - 1;
// 2. Vòng lặp cho đến khi con trỏ bên trái nhỏ hơn hoặc bằng con trỏ bên phải
while (trái <= phải) {
// 3. Tính toán phần tử giữa
int mid = (trái + phải) / 2;
// 4. Nếu phần tử giữa bằng giá trị đích, hãy trả về chỉ mục của phần tử giữa
if (mảng [mid] == target) {
trở lại giữa;
}
// 5. Nếu phần tử giữa nhỏ hơn giá trị đích, hãy cập nhật con trỏ bên trái
khác nếu (mảng [mid] <target) {
trái = mid + 1;
}
// 6. Nếu không, hãy cập nhật đúng con trỏ
khác {
Phải = giữa - 1;
}
}
// 7. Nếu không tìm thấy giá trị đích, hãy trả về -1
trả lại -1;
}
int main () {
// 1. Tạo một mảng được sắp xếp
int mảng [] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 2. Nhận kích thước của mảng
int n = sizeof (mảng) / sizeof (mảng [0]);
// 3. Nhận giá trị mục tiêu để tìm kiếm
Target int = 5;
// 4. Gọi chức năng tìm kiếm nhị phân để tìm giá trị đích
int index = BinarySearch (ARR, N, Target);
// 5. In chỉ mục của giá trị mục tiêu
cout << "Chỉ số của giá trị đích là:" << index << endl;
trả lại 0;
}
`` `
### Ví dụ
Sau đây là một ví dụ về cách tìm kiếm nhị phân có thể được sử dụng để tìm vị trí của số 5 trong mảng `[1, 2, 3, 4, 5, 6, 7, 8, 9]`:
1. Con trỏ bên trái được khởi tạo thành 0 và con trỏ bên phải được khởi tạo thành 8.
2. Phần tử giữa được tính là (0 + 8) / 2 = 4.
3. Phần tử giữa được so sánh với giá trị mục tiêu.Vì 4 không bằng 5, con trỏ bên trái được cập nhật lên 5.
4. Phần tử giữa được tính toán lại là (5 + 8) / 2 = 6.
5. Phần tử giữa được so sánh với giá trị mục tiêu.Vì 6 không bằng 5, con trỏ bên phải được cập nhật lên 5.
6. Phần tử giữa được tính toán lại là (5 + 5) / 2 = 5.
7. Phần tử giữa bằng giá trị đích, do đó, chỉ số của giá trị đích được trả về.
### Người giới thiệu
* [Tìm kiếm nhị phân trên Wikipedia] (Binary search algorithm - Wikipedia)
* [Tìm kiếm nhị phân trong hướng dẫn C ++] (https: //
=======================================
#binary search, #C++, #data structure, #AlGorithM, #Programming ## Binary Search in C++
Binary search is a search algorithm that finds the position of a target value in a sorted array. It works by repeatedly dividing the array in half until the target value is found.
The time complexity of binary search is O(log n), where n is the size of the array. This means that the algorithm's runtime will grow logarithmically as the size of the array increases.
Binary search is a very efficient algorithm for searching sorted arrays. However, it cannot be used to search unsorted arrays.
### Implementation in C++
The following code shows how to implement binary search in C++:
```c++
#include <iostream>
using namespace std;
// A function to find the position of a target value in a sorted array
int binarySearch(int arr[], int n, int target) {
// 1. Initialize the left and right pointers
int left = 0;
int right = n - 1;
// 2. Loop until the left pointer is less than or equal to the right pointer
while (left <= right) {
// 3. Calculate the middle element
int mid = (left + right) / 2;
// 4. If the middle element is equal to the target value, return the middle element's index
if (arr[mid] == target) {
return mid;
}
// 5. If the middle element is less than the target value, update the left pointer
else if (arr[mid] < target) {
left = mid + 1;
}
// 6. Otherwise, update the right pointer
else {
right = mid - 1;
}
}
// 7. If the target value is not found, return -1
return -1;
}
int main() {
// 1. Create a sorted array
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 2. Get the size of the array
int n = sizeof(arr) / sizeof(arr[0]);
// 3. Get the target value to search for
int target = 5;
// 4. Call the binary search function to find the target value
int index = binarySearch(arr, n, target);
// 5. Print the index of the target value
cout << "The index of the target value is: " << index << endl;
return 0;
}
```
### Example
The following is an example of how binary search can be used to find the position of the number 5 in the array `[1, 2, 3, 4, 5, 6, 7, 8, 9]`:
1. The left pointer is initialized to 0 and the right pointer is initialized to 8.
2. The middle element is calculated as (0 + 8) / 2 = 4.
3. The middle element is compared to the target value. Since 4 is not equal to 5, the left pointer is updated to 5.
4. The middle element is recalculated as (5 + 8) / 2 = 6.
5. The middle element is compared to the target value. Since 6 is not equal to 5, the right pointer is updated to 5.
6. The middle element is recalculated as (5 + 5) / 2 = 5.
7. The middle element is equal to the target value, so the index of the target value is returned.
### References
* [Binary Search on Wikipedia](https://en.wikipedia.org/wiki/Binary_search)
* [Binary Search in C++ Tutorial](https://