算法题求解-给定一个整数序列,要求将序列中所有负数都放于所有非负数之前
文章目录
- 1、问题描述
- 2、功能实现
1、问题描述
给定一个整数序列,要求将序列中所有负数都放于所有非负数之前
2、功能实现
#include <iostream>
#include <vector>
#include <algorithm>using namespace std;// 函数原型声明
void rearrangeNegatives(vector<int>& nums);int main() {vector<int> nums;int n, num;// 从用户输入中读取整数序列cout << "请输入整数序列的长度:";cin >> n;cout << "请输入 " << n << " 个整数,用空格分隔:";for (int i = 0; i < n; ++i) {cin >> num;nums.push_back(num);}// 调用函数重新排列负数和非负数rearrangeNegatives(nums);// 输出重新排列后的序列cout << "重新排列后的序列:";for (int num : nums) {cout << num << " ";}cout << endl;return 0;
}void rearrangeNegatives(vector<int>& nums) {int left = 0, right = nums.size() - 1;while (left < right) {// 向右移动左指针,直到找到一个非负数while (left < right && nums[left] < 0) {left++;}// 向左移动右指针,直到找到一个负数while (left < right && nums[right] >= 0) {right--;}// 交换左右指针所指向的元素if (left < right) {swap(nums[left], nums[right]);left++;right--;}}
}