C++程序 打印数组中的偶数
给定一个数字数组,任务是打印数组中的所有偶数元素。以下是一些示例,让我们来了解一下。
例子:
输入: num1 = [2,7,6,5,4]
输出: 2, 6, 4
输入: num2 = [1,4,7,8,3]
输出: 4, 8
1. 使用 for 循环
算法: 使用 for 循环迭代给定的数组中的每个元素,检查是否 num % 2 == 0,这意味着如果被 2 整除的余数为 0,则为偶数,否则为奇数。如果满足条件,则打印数字。
以下是上述方法的实现:
// C++ program to print even numbers in an array
// using for loop
#include <iostream>
using namespace std;
int main()
{
// array of numbers
int num1[] = { 2, 7, 6, 5, 4 };
// size of an array
int n = 5;
for (int i = 0; i < n; i++) {
// to check the number is even or not
if (num1[i] % 2 == 0) {
cout << num1[i] << " ";
}
}
return 0;
}
输出
2 6 4
时间复杂度: O(N)
辅助空间 : O(1),使用恒定的额外空间 。
2. 使用 while 循环
算法: 使用 while 循环迭代给定的数组中的每个元素,检查是否 num % 2 == 0,这意味着如果被 2 整除的余数为 0,则为偶数,否则为奇数。如果满足条件,则打印数字。
以下是上述方法的实现:
// C++ program to print even numbers in an array
// using while loop
#include <iostream>
using namespace std;
int main()
{
// array of numbers
int num1[] = { 7, 5, 9, 6, 2, 3, 4 };
// size of an array
int n = 7;
int i = 0;
while (i < n) {
// to check the number even or not
if (num1[i] % 2 == 0) {
cout << num1[i] << " ";
}
i++;
}
return 0;
}
输出
6 2 4
时间复杂度: O(N)
辅助空间: O(1),使用恒定的额外空间
3. 使用位运算符&
算法: 使用 for 循环迭代给定的数组中的每个元素,检查是否 num & 1 == 0,因为我们知道 1 和 num 的 AND 运算将给出 0,如果 num 最右侧的位未设置,并且在偶数中最右侧的位未设置。如果满足条件,则打印数字。
以下是上述方法的实现:
// C++ program to print all even numbers in the array
#include <iostream>
using namespace std;
int main() {
// array of numbers
int num1[] = { 2, 7, 6, 5, 4 };
// size of an array
int n = 5;
for (int i = 0; i < n; i++) {
int x=num1[i]&1; // x will store Bitwise AND of number and 1
// as we know , bitwise AND of even number and 1 is 0
// check if it is 0 , then print number
if (x==0) {
cout << num1[i] << " ";
}
}
return 0;
}
// This code is contributed by nikhilsainiofficial546```
输出
2 6 4
时间复杂度 : O(N),因为我们正在迭代整个数组
辅助空间 : O(1),因为只使用了恒定的额外空间
4.使用 位运算符 |
思路 :使用 for 循环迭代给定数组中的每个元素,并检查是否 num | 1 == num+1,如果满足条件,则是偶数,因为我们知道 1 和 num 的 OR 运算将在偶数情况下给出 num+1,然后只打印相应的数字。
以下是上述方法的实现:
// C++ program to print all even numbers in the array
#include <iostream>
using namespace std;
int main() {
// array of numbers
int num1[] = { 2, 7, 6, 5, 4 };
// size of an array
int n = 5;
for (int i = 0; i < n; i++) {
// as we know , bitwise OR of even number and 1 is even number+1
// check if it is even , then print number
if ((num1[i] | 1)==num1[i]+1) {
cout << num1[i] << " ";
}
}
return 0;
}
// This code is contributed by tvsk```
输出
2 6 4
时间复杂度: O(N),因为我们正在迭代整个数组
辅助空间: O(1),因为只使用了恒定的额外空间
5.使用递归
思路 :将数组传递给递归函数,该函数将遍历到最后一个元素并在其为偶数时打印该元素。
以下是上述方法的实现:
// C++ program to print all even numbers in the array
#include <iostream>
using namespace std;
// 递归函数 'printEven',它接受:
// 整数数组 'arr'
// 数组大小 'n'
// 当前索引
void printEven(int* arr, int n, int index) {
// 当索引超过数组大小时停止递归
if(index >= n) return;
// 如果当前元素和1的AND运算结果为0,
// 并且!(0)为1
// 因此,每个偶数元素都将被打印
if(!(arr[index] & 1)) cout << arr[index] << " ";
// 递归到下一个索引
printEven(arr, n, ++index);
}
int main() {
// array of numbers
int arr[] = { 2, 7, 6, 5, 4 };
// size of an array
int n = 5;
printEven(arr, n, 0);
return 0;
}
// This code is contributed by Om Mishra (om_mishra)```
输出
2 6 4
时间复杂度 :O(N),因为我们正在遍历整个数组
辅助空间 :O(1),因为只使用了恒定的额外空间