void Change(int* arr, int len)
{
int i = 0;
int j = i + 1;
while (i < len)
{
if (arr[i] % 2 == 0)//i从第一个数字遍历判断数字是否是偶数
{
while (j < len)
{
if (arr[j] % 2 == 1)//j从i的下一个数字判断数字是否是奇数,如果是就不停交换两个数之间的数字
{
int count = 0;
for (int k = i; count <= j - i; k++)
{
int tmp = arr[j];
arr[j] = arr[k];
arr[k] = tmp;
count++;
}//偶数和奇数之间的数不停交换,直到偶数顺序不变为止
i++;
}
j++;
}
}
i++;
if (arr[i] == arr[i])//如果第一个数和第二个数相等,j也要加一
{
j++;
}
}
}
int main()
{
int str[] = { 9, 9, 14, 1, 2, 12, 8, 14, 7, 20 };
Change(str, sizeof(str) / sizeof(str[0]));
for (int i = 0; i < sizeof(str) / sizeof(str[0]); i++)
{
printf("%-3d", str[i]);
}
return 0;
}
调整数组顺序使奇数位于偶数前面
最新推荐文章于 2024-08-24 12:03:35 发布