您好,登錄后才能下訂單哦!
這篇文章主要介紹PHP如何實現(xiàn)插入排序的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
插入排序基本思路:將數(shù)組分為兩個區(qū)(已排序區(qū)和未排序區(qū)),假定數(shù)組的第一個元素處于已排序區(qū), 第一個元素之后的所有元素都處于未排序部分。排序時用到雙層循環(huán),外層循環(huán)用于從未排序部分中取出待排序元素,并逐步縮小未排序部分,內(nèi)層循環(huán)用于從已排序部分尋找插入位置(即不斷地從已排序部分尋找比待排序元素大的元素), 然后將較大的已排序區(qū)的元素后移,后移的最終結(jié)果是已排序區(qū)元素的最后一個元素占據(jù)待排序元素原來的位置,而已排序區(qū)中間空出一個位置),最后將待排序元素插入元素后移之后留下的空位。
//插入排序 function insert_sort($arr) { //獲取數(shù)組單元個數(shù) $count = count($arr); //外層循環(huán)用于從未排序區(qū)域中取出待排序元素 for ($i=1; $i < $count; $i++) { //獲取當前需要插入已排序區(qū)域的元素值 $temp = $arr[$i]; //內(nèi)層循環(huán)用于從已排序區(qū)域?qū)ふ掖判蛟氐牟迦胛恢? for ($j=$i-1; $j >= 0; $j--) { //如果$arr[$i]比已排序區(qū)域的$arr[$j]小,就后移$arr[$j] if ($temp < $arr[$j]) { $arr[$j+1] = $arr[$j]; $arr[$j] = $temp; } else { //如果$arr[$i]不小于$arr[$j],則對已排序區(qū)無需再排序 break; } } } return $arr; } $arr = array(6, 19, 26, 62, 88, 99, 18, 16, 1); var_dump(insert_sort($arr)); 測試結(jié)果:
以上是PHP如何實現(xiàn)插入排序的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。