當前位置:編程學習大全網 - 編程語言 - PHP實現常見的排序算法

PHP實現常見的排序算法

註:為方便描述,下面的排序全為正序(從小到大排序)

假設有壹個數組[a,b,c,d]

冒泡排序依次比較相鄰的兩個元素,如果前面的元素大於後面的元素,則兩元素交換位置;否則,位置不變。具體步驟:

1,比較a,b這兩個元素,如果a>b,則交換位置,數組變為:[b,a,c,d]

2,比較a,c這兩個元素,如果a<c,則位置不變,數組變為:[b,a,c,d]

3,比較c,d這兩個元素,如果c>d,則交換位置,數組變為:[b,a,d,c]

完成第壹輪比較後,可以發現最大的數c已經排(冒)在最後面了,接著再進行第二輪比較,但第二輪比較不必比較最後壹個元素了,因為最後壹個元素已經是最大的了。

第二輪比較結束後,第二大的數也會冒到倒數第二的位置。

依次類推,再進行第三輪,,,

就這樣最大的數壹直往後排(冒),最後完成排序。所以我們稱這種排序算法為冒泡排序。

選擇排序是壹種直觀的算法,每壹輪會選出列中最小的值,把最小值排到前面。具體步驟如下:

插入排序步驟大致如下:

快速排序是由東尼·霍爾所發展的壹種排序算法。在平均狀況下,排序 n 個項目要Ο(n log n)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他Ο(n log n) 算法更快,因為它的內部循環(inner loop)可以在大部分的架構上很有效率地被實現出來,且在大部分真實世界的數據,可以決定設計的選擇,減少所需時間的二次方項之可能性。

步驟:

從數列中挑出壹個元素,稱為 “基準”(pivot),

重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任壹邊)。在這個分區退出之後,該基準就處於數列的中間位置。這個稱為分區(partition)操作。

遞歸地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

  • 上一篇:三星m.2固態硬盤裝win7系統變藍屏是什麽原因?
  • 下一篇:電腦繪畫筆記本配置推薦
  • copyright 2024編程學習大全網