巧妙排序
题目分析来自“待字闺中”微信公众平台。
题目:排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。
初学python。
第一种方法:
__author__ = 'ledao'
arr = [2, 1, 1, 3, 1, 1, 3, 3, 2]
def findLeftFirstNon1(arr, startPos):
for i in xrange(startPos, len(arr)):
if 1 != arr[i]:
return i
print 'Error occurs!'
return -1
def findRightFirstNon3(arr, startPos):
for i in xrange(startPos, -1, -1):
if 3 != arr[i]:
return i
print 'Error occurs!'
return -1
def sort(arr):
p1 = findLeftFirstNon1(arr, 0)
p3 = findRightFirstNon3(arr, len(arr)-1)
p2 = -1
while True:
for i in xrange(p1, p3+1):
p2 = i
if 1 == arr[i]:
arr[i] = arr[p1]
arr[p1] = 1
p1 = findLeftFirstNon1(arr, p1+1)
break
if 3 == arr[i]:
arr[i] = arr[p3]
arr[p3] = 3
p3 = findRightFirstNon3(arr, p3-1)
break
if p2 >= p3:
break
print 'Completed!'
sort(arr)
print arr

浙公网安备 33010602011771号