在 C++ 中按升序重新排列交替方式中的奇数和偶数值
我们得到一个包含正数和负数的整数类型数组,比方说,任何给定大小的arr[]。任务是以这样的方式重新排列数组,当数组中的最低元素是奇数时,数组的元素将以奇数第一和偶数第二方式重新排列。当数组中的最低元素是偶数时,数组的元素将以偶数第一和奇数第二的方式重新排列,如果偶数/奇数元素的数量大于奇数/偶数元素的数量,则它将放置0和打印结果。
让我们看看这个的各种输入输出场景-
输入 -intarr[]={1,1,2,2,5,4}
输出 -以升序排列交替方式的奇数和偶数值的重新排列为:121254。
说明 -我们得到一个整数类型数组。现在我们将检查哪个是数组中的最小元素,即1是奇数值,因此元素将以奇数第一和偶数第二方式排列,即121254是最终输出。
输入 -intarr[]={6,3,2,8,10,4}
输出 -以升序排列交替方式的奇数和偶数值的重新排列为:234060
说明-我们得到一个整数类型数组。现在我们将检查哪个是数组中的最小元素,即2,这是偶数值,因此elem
下面程序中使用的方法如下
输入整数类型元素的数组并计算数组的大小。
通过将数组和数组大小传递给sort函数,使用C++STL的sort方法对数组进行排序。
声明一个整数变量并通过调用函数设置它Rearrangement(arr,size)
函数内部Rearrangement(arr,size)
创建两个变量作为'vec_1'和'vec_2'作为存储整数类型数据的向量类型。
创建一个整数类型的临时变量作为temp并将其设置为0。
将另一个bool类型的变量声明为check并将其设置为FALSE。
从i到0开始循环FOR,直到i小于size。在循环内,检查IFarr[i]%2=0然后将arr[i]推送到vec_1。否则,将arr[i]推送到vec_2。
将整数变量声明为i和j为0。检查IFarr[0]%2=0然后将检查设置为true。
在温度小于尺寸时开始。在循环内,检查IFcheck=true然后将arr[temp++]设置为vec_1[i++]并将检查设置为!check。否则,将arr[temp++]设置为vec_2[j++]并将检查设置为!check。
打印结果。
示例
#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
vector<int> vec_1, vec_2;
int temp = 0;
bool check = false;
for(int i = 0; i < size; i++){
if(arr[i] % 2 == 0){
vec_1.push_back(arr[i]);
}
else{
vec_2.push_back(arr[i]);
}
}
int i = 0;
int j = 0;
if(arr[0] % 2 == 0){
check = true;
}
while(temp < size){
if(check == true){
arr[temp++] = vec_1[i++];
check = !check;
}
else{
arr[temp++] = vec_2[j++];
check = !check;
}
}
}
int main(){
int arr[] = { 1, 1, 2, 2, 5, 4 };
int size = sizeof(arr) / sizeof(int);
//对数组进行排序
sort(arr, arr + size);
cout<<"以升序排列的另类时尚中奇数和偶数值的重新排列是: ";
Rearrangement(arr, size);
for(int i = 0; i < size; i++){
cout << arr[i] << " ";
}
return 0;
}输出结果如果我们运行上面的代码,它将生成以下输出
以升序排列的另类时尚中奇数和偶数值的重新排列是: 1 2 1 2 5 4