荷兰国旗问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了荷兰国旗问题相关的知识,希望对你有一定的参考价值。
#encoding:utf-8
_author_ = "Wang Wenchao"
#荷兰国旗问题 0放在左边,1放在中间,2放在右边
arr=[2,2,2,2,1,2,0,2,0,1,0]
#{}1,2,0,2,0,1,0{}
#用i遍历数组,是0区就和零区下一个交换,是2区就和2区前一个交换
def OneZeroTwo(arr):
length=len(arr)
if length==1 or not arr:
return arr
low=-1
high=length
i=0
while i<high:
if arr[i]==1:
i+=1
elif arr[i]==0:
if i==low+1:
low+=1
i+=1
else:
arr[i],arr[low+1]=arr[low+1],arr[i]
low+=1
else:
if i+1==high:
high-=1
i+=1#break
else:
arr[i],arr[high-1]=arr[high-1],arr[i]
high-=1
return arr
print OneZeroTwo(arr)
以上是关于荷兰国旗问题的主要内容,如果未能解决你的问题,请参考以下文章