把数组A的奇数放在左边,偶数放在右边

这也是一道面试题,是不是easy到爆,但是渣渣我面试时一点算法状态都没有

这道题和上一篇博客里那道题的解法一模一样

# include <iostream>
using namespace std;
typedef int DataType; void InputArray(DataType*& array,int& l){
cout<<"输入数组长度:";
cin>>l;
array=new DataType[l];
int i=0;
while(i<l){
cin>>array[i++];
}
};
void OutputArray(DataType* array,int l){
for(int i=0;i<l;i++){
cout<<array[i]<<"\t";
}
cout<<endl;
};
void InsertionSort(DataType*& array,int l,int d){
int key=0,j=0;
if(d==1){
for(int i=1;i<l;i++){
j=i-1;
key=array[i];
while(j>=0&&array[j]>key){
array[j+1]=array[j--];
}
array[j+1]=key;
}
}
else if(d==-1){
for(int i=1;i<l;i++){
j=i-1;
key=array[i];
while(j>=0&&array[j]<key){
array[j+1]=array[j--];
}
array[j+1]=key;
}
}
};
void Find(DataType* array,int l,DataType t){
int i=0,j=l-1,sum=0;
while(i<j){
sum=array[i]+array[j];
if(sum>t) j--;
else if(sum<t) i++;
else{
cout<<array[i]<<"+"<<array[j]<<"="<<t<<endl;i++;j--;
}
}
};
void Merge(DataType*& array,int l){
int i=0,j=l-1;
while(i<j){
if(array[i]%2==0&&array[j]%2==1){
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
else{
if(array[i]%2==1)
i++;
if(array[j]%2==0)
j--;
}
}
};
int main(){
DataType* array=NULL;
int l=0,d=0;
char conti='Y';
cout<<"--------开始-------"<<endl;
while(conti=='Y'||conti=='y'){
InputArray(array,l);
cout<<"请输入排序方式【顺序:1/逆序:-1】:";
cin>>d;
InsertionSort(array,l,d);
OutputArray(array,l);
int t=0;cin>>t;
Find(array,l,t);
Merge(array,l);
OutputArray(array,l);
cout<<"输入新的待排序数组?【Y/N】:";
cin>>conti;
}
cout<<"---------结束--------"<<endl;
OutputArray(array,l);
return 0;
}

  

  

上一篇:js定义对象的几种容易犯的错误


下一篇:总结下java经常犯的错误