算法实现一个整数数组前办部分为奇数,后半部分为偶数,要求时间复杂对为O(n).
#include<stdio.h>
#include<stdlib.h>
bool isEven(int a) //判断奇偶
{
return a%2==0?true:false;
}
void transformation(int data[],int n)//实现算法前半部分为奇数,后半部分为偶数
{
int begin=0;
int end=n-1;
while(begin<end)
{
if(!isEven(data[begin]))
{
begin++;
continue;
}
if(isEven(data[end]))
{
end--;
continue;
}
int c=data[begin];
data[begin]=data[end];
data[end]=c;
}
printf("after transformation\n");
for(int i=0;i<n;i++)
printf("%d ",data[i]);
printf("\n");
}
int main(int argc,char**argv)
{
int a[]={1,2,3,4,5,6,7,9,10,12,14,11};
int n=12;
printf("before transformation\n");
for(int i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
transformation(a,n);
return 0;
}
算法实现数组前半部分为奇数,后半部分为偶数。
最新推荐文章于 2023-09-12 19:47:38 发布