采用快速排序中数据交换的思想,设置双指针.同时从前往后、从后往前,扫描一遍即可。
// An highlighted block
def swapcounts(charlist):
start = 0
end = len(charlist)-1
count = 0
while start < end:
while charlist[start] == 0 and start<len(charlist):
start += 1
while charlist[end] == 1 and end >= 0:
end -= 1
if start < end:
count += 1
charlist[end] = 1
charlist[start] = 0
print(charlist)
return count
def main():
charlist = [1,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0]
print(swapcounts(charlist))
if __name__ == '__main__':
main()