已知线性表按顺序存储,且每个元素都是不相同的整数型元素,设计把所有奇数移动到所有偶数前边的算法(要求时间最短,辅助空间最小)
#include <iostream>
#include <time.h>
#include <stdlib.h>
int * testArray(int size)
{
int *tmp=(int*) malloc(sizeof(int )*size);
for(int i=0;i<size;i++)
{
tmp[i]=rand()%100;
}
return tmp;
}
void print(int *tmp,int size)
{
printf("the array is:");
for(int i=0;i<size;i++) printf("%3d",tmp[i]);
puts("");
}
void swap(int &x,int &y)
{
int tmp=x;
x=y;
y=tmp;
}
void move(int* tmp,int len)
{
int left=0,right=len-1;
while(left<right)
{
while(left<right&&tmp[left]%2==0) left++;
while(left<right&&tmp[right]%2==1) right--;
if(left<right) swap(tmp[left],tmp[right]);
left++,right--;
}
}
int main() {
srand(time(nullptr));
int *r1= testArray(10);
print(r1,10);
move(r1,10);
print(r1,10);
return 0;
}