上學的時候學習的排序排序,現在流行二叉樹。。

2022-03-18 19:43:45 字數 1711 閱讀 2314

$count = 1000;

for($i=0;$i<$count;$i++)

# 空白對照

$start = microtime(1);

echo 'do nothing takes:' . number_format((microtime(1) - $start), 6);

echo "\n";

# 原生方法排序

$test_array = $random_array;

$start = microtime(1);

sort($test_array);

echo 'origin sort takes:' . number_format((microtime(1) - $start), 6);

echo "\n";

# 氣泡排序

# 兩兩交換,思路很簡單

$test_array = $random_array;

$start = microtime(1);

# 需要把計算個數的時間也考慮到

$count = count($test_array);

# 迴圈n-1次

for($i=1;$i<$count;$i++)

}}echo 'bubble sort takes:' . number_format((microtime(1) - $start), 6);

echo "\n";

# 選擇排序

# 依次選擇最小(大)的元素,等選擇完畢自動有序

$test_array = $random_array;

$start = microtime(1);

$count = count($test_array);

for($i=0;$i<$count-1;$i++)

}}echo 'select sort takes:' . number_format((microtime(1) - $start), 6);

echo "\n";

# 插入排序

# 就像別人給你發撲克牌,拿到一張牌就插到你手上,並使之有序

$test_array = $random_array;

$start = microtime(1);

$count = count($test_array);

# 直接跳過$i=0

for($i=1;$i<$count;$i++)else

}}echo 'insertion sort takes:' . number_format((microtime(1) - $start), 6);

echo "\n";

# 快速排序

# 有點遞迴的思想,隨機乙個基準,將集合分為兩半,然後繼續分解,直到元素個數為1或0個

$test_array = $random_array;

$start = microtime(1);

function quick_sort($arr)else

}$l = quick_sort($left);

$r = quick_sort($right);

return array_merge($l, (array)$base, $r);

}quick_sort($test_array);

echo 'quick sort takes:' . number_format((microtime(1) - $start), 6);

echo "\n";

只有上學的時候沒學

最近做乙個東西,對一件事體會特別深。程式設計和編寫,實際上就是把問題弄明白的過程。這個過程就是學習。其實世界上大多數事情都當如此,那些不包含這一過程的工作可以說都是毫無價值的 這一點通過對社會的觀察也可以看到。和朋友說這些話,朋友說,沒錯,幹什麼都是學習,只有原來上學的時候沒學。深以為然。我說,即便...

inline block並列排序時候的影響

當兩個設定了inline block屬性的元素並列排放時,它們的位置能夠互相影響。元素結構 13 我們使三個div都設定為 inline block,設定寬度使其居於一行內。如果再把 container demo2 中的內容注釋掉,我們可以看到一種十分詭異的情況,如圖。可以發現本該位於父容器頂端的d...

聯合索引建立時候的排序規則

比如mysql 單列索引是將該列資料當做關鍵字構建一顆b tree,但是組合索引是如何實現的呢?比如兩個欄位的組合索引,select from table1 where a 22 and b 33 是要建兩棵樹嗎?如果只建立一顆樹,那b列是如何存放的?一棵樹 如果是單列,就按這列資料進行排序 如果是...