Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để tìm phần tử đỉnh của một mảng bằng cách sử dụng phương pháp Tìm kiếm nhị phân

Trong chương trình C ++ này, chúng ta tìm ra một trong những đỉnh trong mảng có thể được tìm thấy Sử dụng cách tiếp cận tìm kiếm nhị phân. Thuật toán này trả về đỉnh đầu tiên được tìm thấy do độ phức tạp theo thời gian của thuật toán là O (log (n)).

Thuật toán

Hàm
 Begin PeakElement () có ‘arr’ là mảng dữ liệu, chỉ mục bắt đầu và kết thúc trong danh sách đối số. Gán phần giữa của phần con của mảng. Nếu giá trị giữa nằm ở chỉ số ranh giới và giá trị ở giữa cao hơn hàng xóm của nó thì trả về giá trị giữa là đỉnh. Nếu giá trị ở giữa lớn hơn cả hai giá trị lân cận của nó thì trả về giá trị giữa là đỉnh. Nếu giá trị ở bên phải của giữa lớn hơn giữa thì hãy gửi phần con thứ hai của mảng vào PeakElement () làm đối số. Nếu giá trị ở bên trái của giá trị giữa lớn hơn giá trị giữa thì hãy gửi phần con đầu tiên của mảng vào PeakElement () dưới dạng đối số. 

Mã mẫu

 #include  using namespace std; int PeakElement (int a [], int start, int end) {int i, mid; mid =(end + start + 1) / 2; if ((a [mid]> a [mid + 1] &&mid ==start) || (a [mid]> a [mid-1] &&mid ==end)) {return a [mid]; } else if (a [mid]  a [mid + 1]) {return a [mid]; } else if (a [mid] <=a [mid + 1]) {return PeakElement (a, mid + 1, end); } else if (a [mid] <=a [mid-1]) {return PeakElement (a, start, mid-1); }} int main () {int n, i, p; cout <<"\ nNhập số phần tử dữ liệu:"; cin>> n; int arr [n]; for (i =0; i > arr [i]; } p =PeakElement (arr, 0, n-1); cout <<"\ nPhần tử đỉnh của mảng đã cho là:" < 

Đầu ra

 Nhập số phần tử dữ liệu:5Nhập phần tử 1:45Nhập phần tử 2:26Nhập phần tử 3:70Nhập phần tử 4:60Nhập phần tử 5:15 Phần tử cao nhất của mảng đã cho là:70