首頁 >後端開發 >php教程 >PHP學習之插入排序的實現

PHP學習之插入排序的實現

little bottle
little bottle轉載
2019-04-24 17:59:282468瀏覽

本篇文章的主要內容是用PHP實作插入排序,簡單卻經典的演算法題,不知你是否記得了,快隨小編一起回顧一下。

  插入排序基本想法:將陣列分成兩個區(已排序區和未排序區),假定陣列的第一個元素處於已排序區, 第一個元素之後的所有元素都處於未排序部分。排序時用到雙層循環,外層循環用於從未排序部分中取出待排序元素,並逐步縮小未排序部分,內層循環用於從已排序部分尋找插入位置(即不斷地從已排序部分尋找比待排序元素大的元素), 接著將較大的已排序區的元素後移,後移的最終結果是已排序區元素的最後一個元素佔據待排序元素原來的位置,而已排序區中間空出一個位置),最後將待排序元素插入元素後移之後留下的空位。

//插入排序
function insert_sort($arr) {
    //获取数组单元个数
    $count = count($arr);
    //外层循环用于从未排序区域中取出待排序元素
    for ($i=1; $i < $count; $i++) {
        //获取当前需要插入已排序区域的元素值
        $temp = $arr[$i];
        //内层循环用于从已排序区域寻找待排序元素的插入位置
        for ($j=$i-1; $j >= 0; $j--) {
            //如果$arr[$i]比已排序区域的$arr[$j]小,就后移$arr[$j]
            if ($temp < $arr[$j]) {        
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $temp;
            } else {
                //如果$arr[$i]不小于$arr[$j],则对已排序区无需再排序
                break;
            }
        }
    }
    return $arr;
}

$arr = array(6, 19, 26, 62, 88, 99, 18, 16, 1);
var_dump(insert_sort($arr));
  测试结果:

  

#相關教學:PHP影片教學

#

以上是PHP學習之插入排序的實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除