PHP 排序和查詢演算法

2021-09-27 09:03:50 字數 1699 閱讀 8665

知乎:氣泡排序(bubble sort

)的原理是什麼?

潘屹峰:

氣泡排序的原理可以顧名思義:把每個資料看成乙個氣泡,按初始順序自底向上依次對兩兩氣泡進行比較,對上重下輕的氣泡交換順序(這裡用氣泡輕、重表示資料大、小),保證輕的氣泡總能浮在重的氣泡上面,直到最輕的氣泡浮到最上面;保持最後浮出的氣泡不變,對餘下氣泡迴圈上述步驟,直到所有氣泡從輕到重排列完畢。

nerd leo:

在實際專案中應該使用php

自帶的庫函式。冒泡和快排要在大資料量下才有明顯的效能差異 。在幾個常用的小資料排序演算法中,冒泡是實際效率最差的,選擇排序或插入排序

$nums=array(7,2,1,3,4,5,6);

$length=count($nums

);for($i=0;$i

<$length;$i++)

}}

知乎:想請教一下學演算法的大神,快速排序和二叉樹排序哪個快一點?

本人對排序演算法了解不多,但是大概知道快速排序和二叉樹排序的原理。兩者在排序速度上差別大嗎?懇請大神給我這個小白科普一下。

yan gu:

首先,預設題主說序列的情形,我猜題主並不一定知道任何乙個並行排序演算法。

其次,搜尋樹排序是乙個general

的概念,預設姑且為「隨機二叉搜尋樹」。用它排序的

computational dag

完全等價於快速排序(具體分析自己去看

1987

年那篇**),但是雖然計算是完全一樣的,計算的順序卻大不相同,因而快排的

cache locality

要好的多得多(不懂請自行維基),所以會快得多。

當然二叉樹排序並不是沒有優點。他的最大優勢就在於並不是swap-based sorting

。導致的缺點雖然是

memory access pattern

的導致有很多

random access

,但是優點是並不用頻繁的寫記憶體,於是在一些特殊

setting

下是有優勢的。(如果蛋疼想知道具體內容,請去我主頁把那些關於

sorting

的*****

看了就懂了。)

白如冰:

快排和二叉搜尋樹本質上是一樣一樣的。

快排的partion

不就是分左右子樹麼。

快速排序:

function quick_sort($array

)else

}$left_arr=quick_sort($left_arr

);

$right_arr=quick_sort($right_arr

);

return

array_merge($left_arr,array($key),$right_arr

);

}

二分查詢:

function bin_sch($array, $low, $high, $k

)elseif ($k

< $array[$mid

])else

}return -1;

}

PHP排序演算法及查詢演算法

氣泡排序 function bubblesort array for i 0 i len i return array 快速排序 function quicksort array key array 0 leftarr rightarr array for i 1 i len i else left...

php陣列排序演算法 查詢演算法

陣列排序演算法氣泡排序 從陣列第乙個元素開始,從左到右,相鄰的2個元素比較大小 如果左邊的比右邊的大,則交換位置。邏輯描述 1.需要進行n 1趟比較過程 2.每一趟的比較都比前一趟少比一次,第一趟需要比較n 1次 3.每趟比較,從陣列的開頭開始,跟緊鄰元素比較,並進行交換 需要的時候 示例 arr2...

排序演算法和查詢演算法

法是用來解決常見問題的方法 同乙個問題可以採用多種方法解決,不同 方法適用於不同的環境 排序指的是把一組數字按照某種順序排列好 排序演算法分很多次重複執行,每次負責把 乙個數字放在合適的位置上 為了實現以上效果可以先確定數字然後查詢 位置也可以先確定位置然後查詢數字 通過不斷調整兩個數字的相互順序最...