给定一个整数数组,例如[6,4,-3,0,5,-2,-1,0,1,-9],实现:
将数组中的所有正整数移动到左边,零移动到中间,负整数移动到右边,
要求:不开辟新的内存空间,并且数字的原始顺序不变,结果为: [6,4,5,1,0,0,-3,-2,-1,-9]
方法一:借助函数
li = [6,4,-3,0,5,-2,-1,0,1,-9]
- List item
def number(ele):
if ele > 0:
return -1
elif ele == 0:
return 0
else:
return 1
li.sort(key=number)
print(li)
运行结果:
方法二:借助for循环
for i in range(0,len(li)):
for j in range(0,len(li)-1):
if li[j] > 0:
li[j],li[j+1] = li[j],li[j+1]
elif li[j] <= 0 and li[j+1] >= 0:
li[j],li[j+1] = li[j+1],li[j]
elif li[j] < 0 and li[j+1] < 0:
li[j],li[j+1] = li[j],li[j+1]
print(li)