本篇內容主要講解“PHP怎么實(shí)現常用排序算法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強。下面就讓小編來(lái)帶大家學(xué)習“PHP怎么實(shí)現常用排序算法”吧!
先貼一張分析常見(jiàn)算法時(shí)間復雜度和穩定性的圖
很多phper都不會(huì )算法,一般的web開(kāi)發(fā)也用不上,但我為什么要學(xué)習呢....就是為了遇到不會(huì )算法的程序員可以吊打他們!低調~~~
1.冒泡排序法
冒泡排序就是把小的元素往前調(或者把大的元素往后調)。注意是相鄰的兩個(gè)元素進(jìn)行比較,而且是否需要交換也發(fā)生在這兩個(gè)元素之間。
所以,如果兩個(gè)元素相等,我想你是不會(huì )再無(wú)聊地把它們倆再交換一下。
如果兩個(gè)相等的元素沒(méi)有相鄰,那么即使通過(guò)前面的兩兩交換把兩個(gè)元素相鄰起來(lái),最終也不會(huì )交換它倆的位置,所以相同元素經(jīng)過(guò)排序后順序并沒(méi)有改變。
所以冒泡排序是一種穩定排序算法。
2.選擇排序法
選擇排序即是給每個(gè)位置選擇待排序元素中當前最小的元素。比如給第一個(gè)位置選擇最小的,在剩余元素里面給第二個(gè)位置選擇次小的,
依次類(lèi)推,直到第n-1個(gè)元素,第n個(gè)元素不用選擇了,因為只剩下它一個(gè)最大的元素了。
那么,在一趟選擇時(shí),如果當前鎖定元素比后面一個(gè)元素大,而后面較小的那個(gè)元素又出現在一個(gè)與當前鎖定元素相等的元素后面,那么交換后位置順序顯然改變了。
呵呵!比較拗口,舉個(gè)例子:序列5 8 5 2 9, 我們知道第一趟選擇第1個(gè)元素5會(huì )與2進(jìn)行交換,那么原序列中兩個(gè)5的相對先后順序也就被破壞了。
所以選擇排序不是一個(gè)穩定的排序算法。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站