插入排序

插入排序的邏輯:

假設(shè)Array A為已經(jīng)排序好的數(shù)組,此時(shí)需要從Array B中抽取最靠前的元素插入到Array A中,且需要按順序插入。

變形:

如果只有Array A,而不存在Array B。現(xiàn)在對(duì)Array A自己進(jìn)行插入排序。可以默認(rèn)認(rèn)為Array A中的前半段為已排序好的數(shù)組,后半段為未排序數(shù)組,而元素K為目前正要進(jìn)行排序的元素。此時(shí)前半段可以表示為A[0-(k-1)],后半段為A[(k+1)-(n-1)]n為數(shù)組長(zhǎng)度

代碼實(shí)現(xiàn):

<?php
$a = array(5,2,4,6,1,3);
$b = array(31,41,59,26,41,48);

function insertionSortAsc($a = array())
{
    $length = count($a);

    for ($j = 1; $j < $length; $j++) {
        $current = $a[$j];
        $i = $j - 1;//從原有序deck中最后一位開始比較,從右向左

        while ($i >= 0 && $a[$i] > $current) {
            $a[$i + 1] = $a[$i];//將數(shù)字向左移動(dòng)一位
            $i--;
        }

        $a[$i + 1] = $current;
    }

    return $a;
}

function insertionSortDesc($a = array())
{
    $length = count($a);

    for ($j = 1; $j < $length; $j++) {
        $current = $a[$j];
        $i = $j - 1;

        while($i >= 0 && $a[$i] < $current) {
            $a[$i + 1] = $a[$i];//將數(shù)字向左移動(dòng)一位
            $i--;
        }

        $a[$i + 1] = $current;
    }

    return $a;
}

print_r(insertionSortAsc($a));

print_r(insertionSortDesc($b));

輸出結(jié)果:

result_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 目標(biāo):從小到大(或從大到小)對(duì)數(shù)組進(jìn)行排序。 給你一組數(shù)組,將他們排序。插入排序算法的步驟如下: 把未排序的數(shù)字放...
    云抱住陽光太陽沒放棄發(fā)亮閱讀 1,779評(píng)論 0 7
  • 1 前幾天,章子怡給自己女兒過生日,在微博秀了一張一家四口的溫馨照,結(jié)果又激怒了繼女的生母葛薈婕。葛女士言語里的恨...
    心理咨詢師李淑菊閱讀 2,153評(píng)論 4 15
  • Vuex是什么? Vuex 是一個(gè)專為 Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件...
    蕭玄辭閱讀 3,139評(píng)論 0 6
  • 寒夜如洗,十五剛過,月兒依舊圓滿,皎潔明亮,月中隱隱約約有著桂樹的輪廓,或者本就不是桂樹,只是因了嫦娥的故事,而越...
    初憬閱讀 600評(píng)論 0 1
  • 有時(shí)候,我會(huì)想起那兩個(gè)女孩。 2010年春天,我在美國(guó)學(xué)習(xí)。閑余期間,想去西部看看。為了節(jié)約旅費(fèi),我在網(wǎng)上聯(lián)系了一...
    藍(lán)柿閱讀 583評(píng)論 7 9