# numpy.median 사용 / 슬라이싱, del 사용
import numpy as np

# 찾고자 하는 숫자가 있는 리스트 생성
a = [1,7,11,12,14,23,33,47,51,64,67,77,139,672,871]

# 리스트야! 내 숫자 담고 있늬? / binary함수야! 얼마나 빨리 찾길래 내가 널 손수 만들어야하늬?
def binary(list_data,find_num,count=0) :
    if np.median(list_data) < find_num : # 47 < 67
        count += 1
        del list_data[:list_data.index(np.median(list_data))+1]
    elif np.median(list_data) > find_num :
        count += 1
        del list_data[list_data.index(np.median(list_data)):]
    elif np.median(list_data) == find_num :
        return count, list_data
    else :
        return "없다 이놈아"
    return binary(list_data,find_num,count)
        
binary(a,67)


##########################################################################################

# 원래의 데이터 손상없는 ver.
import numpy as np

a = [1,7,11,12,14,23,33,47,51,64,67,77,139,672,871]

# 리스트야! 내 숫자 담고 있늬? / binary함수야! 얼마나 빨리 찾길래 내가 널 손수 만들어야하늬?
def binary(data,find_num,count=0) :
    list_data = list(data)
    median = np.median(list_data)
    if median < find_num :
        count += 1
        del list_data[:list_data.index(median)+1]
    elif median > find_num :
        count += 1
        del list_data[list_data.index(median):]
    elif median == find_num :
        count += 1
        return ("%d은(는) 이진탐색 %d번 만에 찾았습니다"%(find_num,count))
    else :
        return "없다 이놈아"
    return binary(list_data,find_num,count)
        
print(binary(a,67))
print(a) # a는 데이터에 대해서는 훼손되지 않았음

 

 

 

 

 

+ Recent posts