网上关于这个题目的分析不是很多,而且很乱,蓝桥杯邻近,花了一些时间做了做这道题我在关键地方有注释 希望学习交流
简单说来就是把一个数组的奇数和偶数项分开,其实只要是明显类别的数字,在一个数组中都可以用这个模板分开
#include<bits/stdc++.h>
using namespace std;
exclusivesort(vector<int> &arr,int ex,int pos)
{
while(ex >= 0) //探测点不停往前
{
if( !(arr[ex] & 1) ) //探测到偶数 偶数都要往后挪 而且探针和位置坐标均前移
{
swap(arr[ex], arr[pos]);
ex--;
pos--;
}
else //探测到奇数 继续探测
{
ex--;
}
}
}
int main()
{
int size;
cout << "你想要多大就有多大:"<<endl;
cin >> size;
vector<int> vec(size); //默认初始化为size个0
//int *p = new int[size];
cout << "请输入数组de元素:"<<endl;
for(int i=0;i<size;i++)
{
int temp;
cin >> temp;
vec[i] = temp;
}
exclusivesort(vec,size-1,vec.size()-1);
for(vector<int>::iterator it = vec.begin();it!=vec.end();it++)
{
cout << (*it)<< " ";
}
}