7/22(水) アルゴリズムとデータ構造 on
13:00~13:10
・今日のテーマ
・処理速度の差を見よう(線形探索と二分探索)
~14:30
・線形探索と二分探索のコードを書き、処理速度の差を見る
↓以下そのコード↓
import random
import time
#探索対象の数字
key=-1
#探索するリスト
listnum=[]
#線形探索
def l_search(a,key):
#結果を入れる 先頭だったら0
index=-1
#ループの回数
i=0
while True:
if a[i]==key:
index=i
break
if i==len(a)-1:
break
i=i+1
return index
#二分探索
def b_search(a,key):
pl=0
pr=len(a) -1
while True:
pc=(pl + pr) // 2
if a[pc] == key :
return pc
elif a[pc] < key :
pl=pc + 1
else:
pr=pc -1
if pl >pr :
break
return -1
#リスト要素数とループ回数
size=10000
loop=100
#リスト生成
for i in range(1,size):
listnum.append(i)
key = random.randint(1,size)
print(key)
print(l_search(listnum,key))
print(b_search(listnum,key))
#線形探索実行
start = time.time()
for i in range(1,loop):
key = random.randint(1,size)
l_search(listnum,key)
elapsed_time = time.time() -start
print("time:{0}" . format(elapsed_time) + "[sec]")
#二分探索実行
start = time.time()
for i in range(1,loop):
key = random.randint(1,size)
b_search(listnum,key)
elapsed_time = time.time() -start
print("time:{0}" . format(elapsed_time) + "[sec]")
※コピペしてるんでコードのインデントが違ってる箇所あると思いますが、自分で修正お願いします。(気が向いたら直してみますが)
※課題なし
※授業中に殴り書きしているので間違えあったらすいません。
※何かありました連絡ください