C++でソートされたバイナリ配列の1を数えます
このチュートリアルでは、ソートされたバイナリ配列で1を見つけるプログラムについて説明します。
このために、1と0のみを含む配列が提供されます。私たちのタスクは、配列に存在する1の数を数えることです。
例
#include <bits/stdc++.h> using namespace std; //returning the count of 1 int countOnes(bool arr[], int low, int high){ if (high >= low){ int mid = low + (high - low)/2; if ( (mid == high || arr[mid+1] == 0) && (arr[mid] == 1)) return mid+1; if (arr[mid] == 1) return countOnes(arr, (mid + 1), high); return countOnes(arr, low, (mid -1)); } return 0; } int main(){ bool arr[] = {1, 1, 1, 1, 0, 0, 0}; int n = sizeof(arr)/sizeof(arr[0]); cout << "Count of 1's in given array is " << countOnes(arr, 0, n-1); return 0; }
出力
Count of 1's in given array is 4
-
バイナリツリーレベルをC++でソートされた順序で出力します
この問題では、二分木が与えられ、すべてのノードを値の並べ替えられた順序でレベルで出力する必要があります。 概念をよりよく理解するために例を見てみましょう。 入力 − 出力 − 20 6 15 2 17 32 78 この問題を解決するには、ツリーの各レベルのソートされた順序を印刷する必要があります。このために、キューと2つの優先キューを作成する必要があります。 NULLセパレータは、2つのレベルを分離するために使用されます。 例 論理を説明するプログラム- #include <iostream> #include <queue> #include <
-
配列内の反転をカウントするC++プログラム
カウント反転とは、配列をソートするために必要なスイッチの数を意味します。配列がソートされている場合、反転カウント=0。反転カウント=配列が逆の順序でソートされた場合の最大値。 配列内の反転をカウントするC++プログラムを開発しましょう。 アルゴリズム Begin Function CountInversionArray has arguments a[], n = number of elements. initialize counter c := 0 for i in range 0 to n-1, do &n