这个代码在这里该如何修改?
/**
*
* @param array int整型一维数组
* @param arrayLen int array数组长度
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
int* reOrderArray(int* array, int arrayLen, int* returnSize ) {
// write code here
int left = 0;
int right = arrayLen - 1;
while (left < right)
{
while (array[left] % 2 == 1)//从左边找一个偶数
{
left++;
}
while (array[right] % 2 == 0)//从右边找一个奇数
{
right--;
}
if (left < right)
{
//int tmp = left;
int tmp = array[left];
array[left] = array[right];
array[right] = tmp;
right--;
left++;
}
}
return 1;
}
题主考虑的太复杂了,没考虑奇数和奇数 ,偶数和偶数,位置相对不变的要求,这个函数这么写,供参考:
void reOrderArray(int *array, int length)
{
int i ,j ,tmp;
for (i = 0;i < length - 1;i++){
for (j = 0;j < length - i - 1;j++){
//a[j]为偶数,a[j+1]为奇数,奇数在前,偶数在后
if (array[j] % 2 == 0 && array[j+1] % 2 != 0 )
{
tmp = array[j];
array[j]= array[j+1];
array[j+1]=tmp;
}
}
}
}
#include <stdio.h> // 指 针 法
int main()
{
int a[10];
int *p,i;
printf("please enter 10 integer numbers:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(p=a;p<(a+10);p++) //for(i=0;i<10;i++)
{ //printf("%d",a[i]);
printf("%d ",*p);
}
printf("\n");
return 0;
}