void print(int arr[],int sz)
{
int i = 0;
for(i = 0;i < sz;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
void move(int arr[],int sz)
{
int left = 0; //数组左下标
int right = sz - 1; //数组右下标
while(left < right)
{
while((left<right)&&(arr[left]%2==1)) //left<right: 防止越界,arr[left]%2==1:从左边开始查找偶数;遇到奇数就跳过去;
{
left++;
}
while((left<right)&&(arr[right]%2==0)) //同理从右边开始往回查找奇数;遇到偶数就跳过去;
{
right++;
}
if(left < right) //交换奇偶
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
}
}
int main()
{
int arr[] = {1,2,3,4,5,7,8,9,10};
int sz = sizeof(arr)/sizeof(arr[0]);
move(arr,sz); //自定义移动函数
print(arr,sz); //自定义打印函数
}
题目:从一组数据中把奇数和偶数分离开来(编程实现)
最新推荐文章于 2023-04-13 09:50:09 发布