使用选择排序时,仅仅10000个数据python用时比老师视频C++实现的用时长很多,这是什么原因?

来源:2-4 测试算法的性能

慕运维2948618

2018-02-17

def selection_sort(arr):
    for i in range(len(arr)):
        min_index = i
        for j in range(i+1, len(arr)):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
           
def isSorted(arr):
    for i in range(1,len(arr)):
        if arr[i-1] > arr[i]:
            return False
    return True   
    
def testSort(sort, arr):
    start_time = time()
    sort(arr)
    t_elasped = time() - start_time
    assert isSorted(arr), '没有排好序'
    print(sort.__name__, '用时:', t_elasped, '秒') 
    
arr1 = [random.randint(a, b) for _ in range(n)]
testSort(selection_sort, arr1)

http://img.mukewang.com/szimg/5a88128b00019cbd03780022.jpg

而老师使用C++实现时,仅仅使用了0.0几秒,差了几十倍。

写回答

1回答

liuyubobobo

2018-02-18

原生python就是这么慢哦。可以参考这个答案:https://coding.imooc.com/learn/questiondetail/4984.html :)

0
3
慕运维2948618
非常感谢!
2018-02-18
共3条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11186 学习 · 1614 问题

查看课程