빠른 선택 기능을위한 코드를 개발했지만 중앙값을 인쇄하지 않는 것 같습니다.Python- Quickselect 함수가 중간 값을 찾습니다.
L = ['70', '120', '170', '200']
:
Offices 70
MedicalOffice 120
PostOffice 170
Mall 200
그것은리스트로 수입됩니다 : 내가 파일 이름에 대한 주요 기능 프롬프트가 다음 숫자의리스트로 txt 파일이 그것을 분할 있음을 가져 이는 txt 파일입니다
quickselect 함수를 실행하면 경과 시간이 1.9083486328125e-06과 같이 매번 바뀌는 홀수가됩니다. 먼저 어떤 시간 값이 밀리 초입니까? 함수가 피벗을 실행하고 반환 할 때 그것은이 밖으로 뱉어 :
>>> main()
Enter a filename: Input.txt
['70', '120', '170', '200']
Time: 1.9073486328125e-06
200
가 작동하지 않는 이유는 누군가가 말해 줄래? 이 코드입니다 :
import time
start_time = 0
def quickSelect(L, k):
start_time = time.time()
if len(L) != 0:
pivot = L[(len(L)//2)]
smallerList = []
for i in L:
if i<pivot:
smallerList.append(i)
largerList=[]
for i in L:
if i>pivot:
largerList.append(i)
m=len(smallerList)
count=len(L)-len(smallerList)-len(largerList)
if k >= m and k < m + count:
end_time = time.time()
print("Time: ", end_time - start_time)
return pivot
elif m > k:
return quickSelect(smallerList, k)
else:
return quickSelect(largerList, k - m - count)
def main():
dataFilename = input('Enter a filename: ')
dataFile = open(dataFilename)
L = []
for inputLine in dataFile:
splittext = inputLine.split()
place = splittext[0]
locations = splittext[1]
L += [locations]
print(L)
print(quickSelect(L, len(L)//2))
봐를 사용해보십시오'당신이 200''이 – WolframH