我在電腦隨機生成了100000個數,但是算時間的時候,發現選擇排序只用了3秒,插入排序用了8秒,冒泡排序用了19秒。因為剛自學,看到視頻裡說是插入排序快於選擇排序。怎麼實踐出來不是哒?
插入排序和選擇排序都是O(n*n),算法復雜度一樣,你看的什麼視頻?
至於具體的程序,算法復雜度一樣的情況下,具體代碼的差異、數據量,樣本本身(完全無序、倒序、有序)等決定了誰快誰慢,但是在數量級上是一樣的。
冒泡復雜度為O(n*n)。當數據為正序,將不會有交換。復雜度為O(0)。
直接插入排序:O(n*n)
選擇排序:O(n*n)
快速排序:平均時間復雜度log2(n)*n,所有內部排序方法中最高好的,大多數情況下總是最好的。
歸並排序:log2(n)*n
堆排序:log2(n)*n
希爾排序:算法的復雜度為n的1.2次冪