在 C++ 中不使用關係運算符查詢陣列的最大值


在這個問題中,我們給定了一個由正值組成的、大小為 n 的陣列 arr[]。我們的任務是:在不使用關係運算符的情況下查詢陣列中的最大值。

讓我們舉一個例子來理解這個問題,

輸入: arr[] = {5, 1, 6, 7 , 8, 2}

輸出:8

解決方案方法

由於我們需要在不使用邏輯運算子的情況下比較值。為此,我們需要執行重複減法,持續時間最長的數字將是較大的數字。

我們將所有值減一,直到它們變為零。我們將從陣列的前兩個值開始,找到兩個值中的較大者。然後我們需要比較陣列中其餘的值與陣列中的最大元素。透過使用此方法,我們將找到所有元素的最大值

程式說明我們解決方案的工作原理,

示例

線上演示

#include <iostream>
using namespace std;

int returnMax(int x, int y) {
   
   int c = 0;

   while(x || y)
   {
      if(x)
         x--;
      if(y)
         y--;
      c++;
   }
   return c;
}

int findMaxEle(int A[], int N) {

   int maxVal = A[0];
   
   for (int i = N-1; i; i--)
      maxVal = returnMax(maxVal, A[i]);
   
   return maxVal;
}

int main() {
   
   int A[] = {5, 1, 6, 7 , 8, 2};
   int N = sizeof(A) / sizeof(A[0]);
   cout<<"The maximum element of the array is "<<findMaxEle(A, N);
   return 0;
}

輸出

The maximum element of the array is 8>

更新於: 2021-01-25

199 次瀏覽

開啟您的職業生涯

完成該課程即可獲得認證

開始
廣告
© . All rights reserved.