思路分析:
把找到的这个偶数放到末尾,末尾的偶数不需要管,数组长度减去1,首位的原末尾还没判断是否为偶数,所以首位元素的下标也要自减,如果不是偶数,就跳过这次循环直接下一次,当left下标等于right下标的时候,整个数组都排序结束
代码示例:
#include<stdio.h>
#include <stdlib.h>
void paixu(int arr[], int left , int right )
{
for (int left= 0; left< right; ++left)
{
if (arr[left] % 2 == 0)
{
int tmp;
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;//把找到的这个偶数放到末尾
right--;//末尾的偶数不需要管,数组长度减去1
left--;//首位的原末尾还没判断是否为偶数
}
else continue;
}
}
int main()
{
int arr[] = { 0, 1, 3, 2, 8, 4, 9, 6 };
int size = sizeof(arr) / sizeof(arr[0]);
paixu(arr,0,7);
for (int i = 0; i < size; ++i)
{
printf("%d ", arr[i]);
}
system("pause");
return 0;
}