例如我们输入一个数组 arr[]={1,2,3,4,5,6,7,8,9,10}
调整数组使得奇数全部都位于偶数前面
得到{1,3,5,7,9,2,4,6,8,10}
这里类似于冒泡排序的思想,我们在这里创建一个边界bount,初始化值为0
遍历一次数组,比较前后两个数的奇偶性,如果前面的数为偶数,后面的数是奇数,我们将两个数进行交换,这里需要创建一个Swap函数如下(判断奇偶性质,用%2来判断)
void Swap(int* x, int* y){
int tmp = 0;
tmp=*x;
*x = *y;
*y = tmp;
}
每次找奇数,循环一次,找到一个奇数,并放到合适位置
[0,bound)表示已排序区间
[bound,size)表示待排序区间(size为数组长度)
具体函数如下:
void Separate(int* arr, int size){
//每次找奇数的方式
//[0,bound)已排序区间
//[bound,size)待排序区间
for (int bound = 0; bound < size; bound++){
//循环执行一次,bound+1
//此时找到一个比较小的值,并放到合适位置;
for (int cur = size - 1; cur>bound; cur--){
//完成一趟找奇数的过程
if (arr[cur]%2==1&& arr[cur-1]%2==0){
Swap(&arr[cur - 1], &arr[cur]);//判断奇偶性,当前偶后奇即不符合要求,将两个数进行交换
}
}
}
}
总函数如下:
Swap(int* x, int* y){
int tmp = 0;
tmp = *x;
*x= *y;
*y = tmp;
}
void Separate(int* arr, int size){
for (int bound = 0; bound < siz