题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
思路:像冒泡排序那样,相邻两个数比较,两个都是偶数则不动,左偶右奇把偶和奇交换一下,如1234,12不符合不动,23符号条件,交换一下,就是1324,第一个数比完再比第二个数,以此类推。
例子:
1 2 3 4 5 6
1 3 2 4 5 6
1 3 2 5 4 6
1 3 5 2 4 6
代码:
#include<stdio.h>
void JO(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){int j = 0;for (j = 0; j < sz-i-1; j++){if (arr[j] % 2 == 0 && arr[j + 1] % 2 != 0){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}
}
int main()
{int arr[10];int sz = sizeof(arr) / sizeof(arr[0]);int i = 0;for (i = 0; i < 10; i++){scanf("%d", &arr[i]);}JO(arr, sz);int j = 0;for (j = 0; j < 10; j++){printf("%d ", arr[j]);}
}
效果呈现: