题目如下: 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 如输入数组1,4,2,7,8,9,输出结果为1,7,9,2,4,8。
#include <stdio.h>
#define N 10
int is_odd(int num)
{
if(num % 2 != 0)
return 1;
}
void init(int *array)
{
int i;
srand(time(NULL));
for(i = 0; i < N; i ++)
array[i] = rand() % 100;
}
void swap(int *i, int *j)
{
int tmp;
tmp = *i;
*i = *j;
*j = tmp;
}
void print(int *array)
{
int i;
for(i = 0; i < N; i ++)
printf("%d ", array[i]);
printf("\n");
}
void sort(int *array)
{
int i = 0, j = N - 1;
for(i = 0; i < j; i ++){
if(! is_odd(array[i]))
for(j = N - 1; j > i; j --)
if(is_odd(array[j])){
swap(array + i, array + j);
break;
}
}
}
int main(int argc, char ** argv)
{
int array[N];
init(array);
print(array);
sort(array);
print(array);
return 0;
}
void rearrange(int *a, int n)
{
int i = 0, j = n - 1, t = a[0];
while (i != j)
{
while (i < j && ((a[j] & 1) == 0))
j--;
if (i < j)
a[i] = a[j], i++;
while (i < j && ((a[i] & 1) == 1))
i++;
if (i < j)
a[j] = a[i], j--;
}
a[i] = t;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。