C语言实现调整偶数奇数顺序
题目:输入一个数组,实现一个函数,使所有的奇数位于数组的前部分,所有偶数位于数组的后半部分
#include <stdio.h>
void resize(int* arr,int sz)
{
//1.第一种写法:
int i = 0;
int* start = arr;
int* right = arr + sz-1;
int tmp = 0;
for (i = 0; i < sz-1; i++)
{
//if ((*arr) == 1)
//{
// arr++;
//}
//奇数
if (((*arr) % 2 == 1) || ((*arr) == 1))
{
arr++;
}
//偶数
while (((*arr) % 2 == 0) && (start<right))
{
if (((*arr) % 2 == 0) && (start<right))
{
tmp = *arr;
*arr = *right;
*right = tmp;
}
start++;
right--;
}
}
//2.第二种写法:
//int left = 0;
//int right = sz - 1;
//while (left<right)
//{
// //奇数
// while ((arr[left] % 2 == 1) && (left<right))
// {
// arr++;
// }
// //偶数
// while ((arr[right] % 2 == 0) && (left<right))
// {
// right--;
// }
// int tmp = arr[left];
// arr[left] = arr[right];
// arr[right] = tmp;
//}
}
int main()
{
//int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//int arr[] = { 3, 2, 12, 4, 57, 67, 88, 55 };
int arr[] = { 1,3,5,7,9,13,15,17,19};
int sz = sizeof(arr) / sizeof(arr[0]);
resize(arr,sz);
return 0;
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭