zoukankan      html  css  js  c++  java
  • 巧妙排序

    题目分析来自“待字闺中”微信公众平台。

    题目:排序只有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
    
  • 相关阅读:
    第一课 进阶高手的大门
    Codeforces Round #363 (Div. 2) C. Vacations
    HDU 5718 Oracle
    A
    Fibonacci数的后9位
    UESTC 982质因子分解
    UESTC149 解救小Q
    UESTC93 King's Sanctuary
    HDU 4857 逃生
    L1-006. 连续因子
  • 原文地址:https://www.cnblogs.com/ledao/p/3628816.html
Copyright © 2011-2022 走看看