调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
方法一
#include<stdio.h>
void sort(int *arr, int len)
{
int i = 0;
int j = len - 1;
for (i = 0; i != j; i++)
{
if (arr[i] % 2 != 0)//如果是奇数,继续向后遍历
{
continue;
}
else
{
//交换arr[i]与arr[j]的内容
arr[i] ^= arr[j];
arr[j] ^= arr[i];
arr[i] ^= arr[j];
if (arr[j] % 2 == 0)
{
j--;
}
i--;//交换内容后,arr[i]进来新的数字,需要重新判断;
}
}
}
int main()
{
int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int len = sizeof(arr) / sizeof(arr[0]);
sort(arr, len);
int i = 0;
for (; i < len; i++)
{
printf("%d ",arr[i]);
}
system("pause");
return 0;
}
方法二