运用指针在数组中的应用知识编写一个程序,实现将数组a[10]中的整数序列,按照先奇数、后偶数且从小到大的顺序排序,如将4、7、8、3、5、1、2、9、6、10排序为1、3、5、7、9、2、4、6、8、10。
时间: 2024-08-12 12:09:10 浏览: 44
当你需要使用指针在数组中实现这样的排序时,可以使用双指针法,一个用于遍历奇数,另一个用于遍历偶数。以下是一个简单的C++程序,使用了标准库中的`sort`函数来辅助排序,同时利用两个指针`i`和`j`分别指向奇数和偶数的位置:
```cpp
#include <iostream>
#include <algorithm>
void sortOddEven(int a[], int n) {
int i = 0, j = 1; // i for odd numbers, j for even numbers
while (i < n && j < n) {
if (a[i] % 2 == 1 && (j == n || a[j] % 2 != 0)) { // If current odd number is smaller or equal to next even number
std::swap(a[i], a[j]);
i++;
} else if (a[j] % 2 == 0) { // If we reach the end of odd numbers and there are still even numbers left
j += 2;
} else {
i++;
}
}
}
int main() {
int a[] = {4, 7, 8, 3, 5, 1, 2, 9, 6, 10};
int n = sizeof(a) / sizeof(a);
std::cout << "Original array: ";
for (int i = 0; i < n; i++) {
std::cout << a[i] << " ";
}
sortOddEven(a, n);
std::cout << "\nSorted array: ";
for (int i = 0; i < n; i++) {
std::cout << a[i] << " ";
}
return 0;
}
```
运行这个程序,你会看到原始数组和排序后的数组。这里我们没有使用指针的直接交换,而是借助了`std::swap`函数,因为C++标准库提供了更高效和通用的排序算法。
阅读全文