文章目录
概要
1,调整奇数偶数顺序
题目内容:
调整数组使奇数全部都位于偶数前面.
题目:
输入一个整数数组,实现一个函数
来调整该数组中数字的序使得数组中所有的奇数位于数组的前半部分
所有偶数位于数组的后半部分。
如
输入:arr={1,2,3,4,5,6,7,8,9};
输出:1 9 3 7 5 6 4 8 2
代码实现如下:
#include <stdio.h>
void adjust(int nums[], int length) {
int left = 0;
int right = length - 1;
while (left < right) {
// 找到第一个偶数
while (left < right && nums[left] % 2 != 0) {
left++;
}
// 找到第一个奇数
while (left < right && nums[right] % 2 == 0) {
right--;
}
// 交换奇数和偶数的位置
if (left < right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}
}
int main() {
int nums[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int length = sizeof(nums) / sizeof(nums[0]);
adjust(nums, length);
printf("调整后的数组:");
for (int i = 0; i < length; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
2,合并排序:
输入包含三行
第一行包含两个正整数n,m,用空格分隔。n表示第二行第一个升序序列中数字数,m表示第三行第二个升序序列中数字的个数。
第二行包含n个整数,用空格分隔。
第三行包含m个整数,用空格分隔.
输出描述:
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的序列中的元素重新进行升序序列排列合并。
示例1
输入:5 6
1 3 7 9 22
2 8 10 17 33 44
输出:1 2 3 7 8 9 10 17 22 33 44
代码实现:
#include <stdio.h>
void merge_sorted_arrays(int arr1[], int n, int arr2[], int m, int merged[]) {
int i = 0, j = 0, k = 0;
while (i < n && j < m) {
if (arr1[i] <= arr2[j]) {
merged[k] = arr1[i];
i++;
} else {
merged[k] = arr2[j];
j++;
}
k++;
}
while (i < n) {
merged[k] = arr1[i];
i++;
k++;
}
while (j < m) {
merged[k] = arr2[j];
j++;
k++;
}
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
int arr1[100], arr2[100], merged[200];
for (int i = 0; i < n; i++) {
scanf("%d", &arr1[i]);
}
for (int i = 0; i < m; i++) {
scanf("%d", &arr2[i]);
}
merge_sorted_arrays(arr1, n, arr2, m, merged);
printf("合并后的升序序列:");
for (int i = 0; i < n + m; i++) {
printf("%d ", merged[i]);
}
printf("\n");
return 0;
}
总结:
题目比较简单,可以当拿来练练手,保持代码编写的思维,不让大脑宕机。