使用辅助空间的 C 语言算法实现,实现对n个关键字的序列进行调整,使得序列中奇数都排在偶数前面,C语言完整代码
时间: 2024-02-17 08:00:00 浏览: 166
以下是使用辅助空间的 C 语言算法实现,实现对n个关键字的序列进行调整,使得序列中奇数都排在偶数前面的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
void adjust(int arr[], int n) {
int *temp = (int*)malloc(n * sizeof(int)); // 动态分配辅助空间
int i, j = 0, k = n - 1;
for (i = 0; i < n; i++) {
if (arr[i] % 2 == 1) {
temp[j++] = arr[i]; // 奇数放在辅助空间的前面
} else {
temp[k--] = arr[i]; // 偶数放在辅助空间的后面
}
}
for (i = 0; i < n; i++) {
arr[i] = temp[i]; // 将调整后的序列拷贝回原数组
}
free(temp); // 释放辅助空间
}
int main() {
int arr[] = {3, 4, 1, 5, 2, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("原序列:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
adjust(arr, n);
printf("调整后的序列:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
主要思想是使用一个辅助空间,遍历原序列,将奇数放在辅助空间的前面,将偶数放在辅助空间的后面,最后将调整后的序列拷贝回原数组。在主函数中调用 adjust 函数,输出原序列和调整后的序列。
阅读全文