1.调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define N 9 //宏定义:用一个N来表示数组大小
void sort(int arr[], int len){//定义一个无返回值排序函数
//将数组分为2部分,左边下标用left,右边下标用right表示
int left = 0;
int right = len-1;//右边下标起始位置为数组长度减一
int temp;//定义一个整形中间变量
while (left < right){//当left<righ说明,该数组没有遍历完
//如果arr[left]为奇数,则该元素的位置不变,继续判断下一个元素
if (arr[left] % 2 == 1){
++left;
}
//如果arr[left]为偶数,则将它与最后一个元素交换,
//同时将righ自身减一,变成倒数第二个元素下标
//再判断交换后arr[left]的奇偶性
else if (arr[left] % 2 == 0){
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
--right;
}
}
//输出排序完成后的数组
for (int i = 0; i < N; ++i){
printf("%d\t", arr[i]);
}
putchar('\n');
}
int main(){
int len = 0;//定义一个整形变量用来存储数组的长度
int arr[N] = { 0 };//定义一个整形数组,并进行初始化
printf("请输入一组整数:\n");//提示输入
//对数组进行输入赋值
for (int i = 0; i < N; ++i){
scanf("%d", &arr[i]);
}
len = sizeof(arr) / sizeof(arr[0]);//求取数组长度
sort(arr, len);//调用sort函数
return 0;//函数返回值为0
}
运行结果: