一个整数顺序表L,设计一个尽可能高效的算法将其中所有值为负数移到其他元素前面,python算法实现
时间: 2024-06-12 13:10:00 浏览: 14
可以使用双指针法,一个指针从前往后扫描,一个指针从后往前扫描,当两个指针都扫描到负数和正数时,交换它们的位置,直到两个指针相遇为止。具体实现如下:
```python
def move_negative(L):
left, right = 0, len(L) - 1
while left < right:
while left < right and L[left] < 0:
left += 1
while left < right and L[right] >= 0:
right -= 1
if left < right:
L[left], L[right] = L[right], L[left]
return L
```
相关问题
一个整数顺序表L,设计一个尽可能高效的算法将其中所有值为负数移到其他元素前面
可以使用双指针法,一个指针从前往后扫描,一个指针从后往前扫描,当两个指针都扫描到负数和正数时,交换它们的位置,直到两个指针相遇为止。时间复杂度为O(n)。
代码示例:
```
void moveNegative(int L[], int n) {
int i = 0, j = n - 1;
while (i < j) {
while (i < j && L[i] < 0) i++;
while (i < j && L[j] >= 0) j--;
if (i < j) {
int temp = L[i];
L[i] = L[j];
L[j] = temp;
}
}
}
```
一个整数顺序表L,设计一个尽可能高效的算法删除其中所有值为负数的元素:python算法实现
可以使用双指针法,将非负数元素移到前面,然后修改列表长度即可。具体实现如下:
```python
def remove_negative(L):
i, j = 0, 0
while j < len(L):
if L[j] >= 0:
L[i] = L[j]
i += 1
j += 1
del L[i:]
```
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)