给定一个整数序列 要求将序列中所以负数都放于所有非负数之前
时间: 2024-11-06 15:23:37 浏览: 15
为了将给定整数序列中的所有负数放在所有非负数之前,你可以采用多种算法实现,其中一种简单直观的方法是遍历序列并维护两个指针,一个指向当前非负数的位置,另一个则用于标记遇到的第一个负数的位置。以下是步骤:
1. 初始化两个指针,`positiveIndex = 0` 表示非负数的开始位置,`negativeFound = False` 表示尚未找到负数。
2. 遍历整个序列:
a. 如果当前元素 `num` 是非负数(即 `num >= 0`),则直接将其放置在已排序的非负数部分,并更新 `positiveIndex++`。
b. 如果 `num` 是负数,则将其插入到 `positiveIndex` 的位置,然后设置 `negativeFound = True`。
3. 当遍历完序列后,如果 `negativeFound` 为 `True`,说明有负数存在。这时,将从 `positiveIndex` 开始到末尾的部分作为非负数序列;而从起始位置到 `positiveIndex - 1` 则为负数序列。
下面是一个伪代码示例:
```python
def sort_negatives(arr):
if not arr:
return []
positiveIndex = 0
negativeFound = False
for num in arr:
if num >= 0:
arr[positiveIndex] = num
positiveIndex += 1
else:
if not negativeFound:
negativeFound = True
temp = arr[:positiveIndex]
arr[positiveIndex] = num
# 将前面的非负数序列和后面的负数序列拼接起来
return temp + arr[:positiveIndex] if negativeFound else arr
```
阅读全文