C++中数组逆序可通过双指针法或STL的reverse函数实现:1. 双指针从两端交换元素,时间复杂度O(n),空间复杂度O(1);2. 使用中的reverse(arr, arr+n)更简洁;3. 对vector可用reverse(vec.begin(), vec.end())。手动实现助于理解原理,STL方法适合实际开发。

在C++中实现数组逆序(元素反转)是一个常见的基础操作。核心思路是通过双指针从数组两端向中间靠拢,逐个交换元素,直到完成整个数组的反转。这种方法效率高,时间复杂度为 O(n),空间复杂度为 O(1)。
使用双指针实现数组反转
定义两个指针,一个指向数组首元素,另一个指向末元素,然后交换它们的值,并向中间移动,直到两个指针相遇。
示例代码:
#include using namespace std;void reverseArray(int arr[], int n) {int left = 0;int right = n - 1;while (left < right) {// 交换 left 和 right 指向的元素int temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}}
int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);
cout << "原数组: ";for (int i = 0; i < n; i++) { cout << arr[i] << " ";}cout << endl;reverseArray(arr, n);cout << "逆序后: ";for (int i = 0; i < n; i++) { cout << arr[i] << " ";}cout << endl;return 0;
}
立即学习“C++免费学习笔记(深入)”;
利用STL中的reverse函数
C++标准库提供了 std::reverse 函数,可以更简洁地实现数组或容器的反转,包含头文件 gorithm> 即可使用。
示例代码:
#include #include using namespace std;int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);
cout << "原数组: ";for (int i = 0; i < n; i++) { cout << arr[i] << " ";}cout << endl;reverse(arr, arr + n); // 反转整个数组cout << "逆序后: ";for (int i = 0; i < n; i++) { cout << arr[i] << " ";}cout << endl;return 0;
}
立即学习“C++免费学习笔记(深入)”;
处理动态数组(vector)的反转
如果使用 std::vector,同样可以使用双指针或 std::reverse,操作更加灵活。
示例:
#include #include #include using namespace std;int main() {vector vec = {1, 2, 3, 4, 5};
cout << "原向量: ";for (int x : vec) { cout << x << " ";}cout << endl;reverse(vec.begin(), vec.end());cout << "逆序后: ";for (int x : vec) { cout << x << " ";}cout << endl;return 0;
}
立即学习“C++免费学习笔记(深入)”;
基本上就这些。手动实现有助于理解算法本质,而使用STL函数则更高效、简洁,适合实际开发。根据场景选择合适的方法即可。
以上就是C++数组逆序操作 元素反转算法实现的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1473687.html
微信扫一扫
支付宝扫一扫