一个数组中,使奇数全部位于偶数前面。 刚开始要实现这个问题时,只定义了一个数组arr[],在运行时发现
只有一个数组时,时间复杂度比较高,因此另辟蹊径,定义了第二个数组arr1[],来存放修改后的值。
#include<stdio.h>
#include <windows.h>
void change(int arr[],int arr1[],int rows)
{
int i;
int t = rows/2+1;
int j = 0;
for (i = 0; i < rows; i++)
{
if (arr[i] % 2 == 0 ) //判断是奇数还是偶数
{
arr1[t] = arr[i];
t++;
}
else if (arr[i]%2!=0)
{
arr1[j] = arr[i]; //将奇数放在偶数前面
j++;
}
}
printf("arr1=");
for (i = 0; i < rows; i++)
{
printf(" %d ", arr1[i]);
}
printf("\n");
}
int main()
{
int arr[] = { 1, 1, 3, 4, 5, 6,9,8};
int arr1[6] = { 0 };
int i;
int rows = sizeof(arr) / sizeof(arr[0]);
printf("arr=:");
for (i = 0; i < rows; i++)
{
printf(" %d ", arr[i]);
}
printf("\n");
change(arr,arr1, rows);
system("pause");
return 0;
}