Python の 「バブルソートプログラム」 は,普通はつぎのようなコードが書かれる:
DATA = [2, 5, 6, 3, 4, 1]
for i in range(len(DATA)-1):
for j in range(len(DATA)-1, i, -1):
if(DATA[j] < DATA[j-1]):
tmp = DATA[j]
DATA[j] = DATA[j-1]
DATA[j-1] = tmp
print(DATA)
しかしこれは,「オブジェクト指向」 とは無関係。
「オブジェクト指向」 だと,
<class BubbleSort の物を自動させる>
を以て,DATA をバブルソートする
というようになる。
これは,以下のようになる:
# 類の設定
class BubbleSort:
def __init__(self, data):
self.data = data
# main() の DATA が,変数 data に代入され,
# そして self.data で,物の属性になる
# 物の振る舞い (メソッド)
def sort(self):
n = len(self.data)
for i in range(n - 1):
for j in range(n - 1, i, -1):
if self.data[j] < self.data[j - 1]:
self.data[j], self.data[j - 1]
= self.data[j - 1], self.data[j]
def result(self):
return self.data
def main():
DATA = [2, 5, 6, 3, 4, 1]
# 類 BubbleSort の物 sorter 物を作る
sorter = BubbleSort(DATA)
# 物を自走させる
sorter.sort()
# 出力
print(sorter.result())
if __name__ == '__main__':
main()
|