간단한 정렬 알고리즘으로 익숙해졌고 의사 코드보다는 알고리즘 설명에서 삽입 정렬을 만들려고했습니다. 내가 근무하는 알고리즘을 만들어 나는 설명 장착 생각했다 :알고리즘 정렬 효율성 비교
import random
nums = []
for i in range(10000):
nums.append(random.randrange(0, 1000))
def getSortedIndexForEle(ele, sorted):
for i in range(0, len(sorted)):
if ele < sorted[i]:
return i
return len(sorted)
def sort(lst):
sorted = []
for ele in lst:
sorted.insert(getSortedIndexForEle(ele, sorted), ele)
return sorted
print(sort(nums))
코드가 (여전히 올바른 결과 생산) 현명한 알고리즘 compisition 일치하지 않습니다 그러나 그렇게 나는 또 다른 시도했다 :
import random
nums = []
for i in range(10000):
nums.append(random.randrange(0, 1000))
def sort(lst):
for i in range(1, len(lst)):
ele = lst[i]
j = i - 1
for k in range(j, -2, -1):
if ele >= lst[k]:
break
lst[k + 1] = lst[k]
lst[k + 1] = ele
sort(nums)
print(nums)
을
나는 이것이 정확하다고 생각하고, 의사 코드와 비교해 보았는데 실제로는 똑같은 일을한다.
제 질문은 알고리즘에 맞지 않는 첫 번째 알고리즘입니다. 길이가 10000이고 모든 요소가 임의의 숫자 인 목록을 사용하여 내 컴퓨터에서 실제 시간의 절반 정도를 실행합니다. 어떻게 가능할까요? 두 번째 알고리즘이 올바르지 않습니까? 나는 알고리즘의 파이썬 예제를 시도해 보았고 심지어 첫 번째 알고리즘보다 오래 걸렸다. ...
필자가'#define rand (x) 42'와 같이 correkt 결과를 생성 할 필요가 없다면 필자의 코드를 임의적으로 빠르게 만들 수있다. – paxdiablo
코드 자체가 알고리즘과 일치하지 않지만 올바른 결과를 산출했습니다. 미안해, 내가 분명해야 했어. – chillNZ
'range (j, -2, -1)'를 설명 할 수 있습니까? 파이썬에 익숙하지 않습니다. – sircodesalot