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