给定一个数组,将奇数排在前面,偶数排在后面,首先理一下思路,先定义一个left和一个right,right从最后一个元素开始访问,当下标为left的元素为奇数时left++,当下标为right的元素为偶数时right–,如果下标为left的元素为偶数,下标为right的元素为奇数,就交换,当然大前提是left<right,这样就实现了把奇数排在前面,偶数放在后面的要求。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
#include<stdlib.h>
void Swap(int *arr, int len)
{
int left = 0;
int right = len - 1;
while (left < right)
{
int tmp = 0;
while (left < right&&arr[left] % 2 == 1)
{
left++;
}
while (left < right&&arr[right] % 2 == 0)
{
right--;
}
if (left < right)
{
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
}
}
void Show(int *arr,int len)
{
int i = 0;
for (i = 0; i < len; i++)
{
printf("%d", arr[i]);
}
printf("\n");
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int len = sizeof(arr)/sizeof(arr[0]);
Show(arr,len);
Swap(arr,len);
Show(arr,len);
system("pause");
return 0;
}