C语言编写算法,实现对n个关键字的序列进行调整,是序列中奇数都排在偶数前面,要求算法需要一个辅助空间
时间: 2024-02-17 15:59:55 浏览: 75
数据结构与算法c++实现 改变顺序表的元素次序,第奇数个元素移到前面,第偶数个元素移到后面
5星 · 资源好评率100%
以下是使用辅助空间的 C 语言算法实现,实现对n个关键字的序列进行调整,使得序列中奇数都排在偶数前面:
```c
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); // 释放辅助空间
}
```
主要思想是使用一个辅助空间,遍历原序列,将奇数放在辅助空间的前面,将偶数放在辅助空间的后面,最后将调整后的序列拷贝回原数组。
阅读全文