STEP 2.1 パーティション (partition) - Pythonの例

[プログラム例

解答例

import random

def partition(array):
   pivot = array[0]
   left = []   # 小さいもの
   pivots = [] # 同じ値のもの (自分自身も比較される)
   right = []  # 大きいもの

   for val in array:
      if val < pivot:
         left.append(val)
      elif val == pivot:
         pivots.append(val)
      else:
         right.append(val)

   return(left + pivots + right)

a = [random.randint(0,100) for i in range(10)]
print("before = {}".format(a))
print("pivot = {}".format(a[0]))
print("after  = {}".format(partition(a)))

<実行例>
tsuchiya@www1 python]$ python3 partition.py
before = [17, 42, 2, 75, 13, 3, 53, 61, 70, 51]
pivot = 17
after  = [2, 13, 3, 17, 42, 75, 53, 61, 70, 51]

[tsuchiya@www1 python]$ python3 partition.py
before = [38, 74, 35, 12, 74, 30, 54, 24, 68, 50]
pivot = 38
after  = [35, 12, 30, 24, 38, 74, 74, 54, 68, 50]