php實現的冒泡,插入排序,希爾排序,歸併排序

來源:互聯網
上載者:User

標籤:

<?php
/**
*選擇排序也就是冒泡排序,就是基於各個資料之間的對比來排序
*
*/
$arr = array(2,1,7,5,8,9,3,4,10,30,28,24);
function bubbleSort($arr) {
    $len = count($arr);
    $k = 0;
    for($i=0;$i<$len;$i++){
    $k++;
        for($j=$i+1;$j<$len;$j++) {
            if($arr[$i] > $arr[$j]) {
                $k++;
                $tmp = $arr[$i];
                $arr[$i] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
    echo $k;
    return $arr;
}

print_r(bubbleSort($arr));

/**
*插入排序
*  插入排序可以避免需要排序的資料中有一部分是已經有序的樹據在排序
*  判斷當前位置i後邊的資料是否已經有序.
*/

function insertSort($arr) {
    $len = count($arr);
    $k = 0;
    for($i=1;$i<$len;$i++) {
        $k++;
        //排序 $arr[i],$arr[$i-1],....,$arr[i-n]
        for($j=$i;$j > 0 && ($arr[$j-1] > $arr[$j]);$j--) {
            $tmp = $arr[$j-1];
            $arr[$j-1] = $arr[$j];
            $arr[$j]  = $tmp;
            $k++;
        }
    }
    echo $k;
    return $arr;
}

print_r(insertSort($arr));

/***
*希爾排序
* 希爾排序是對插入排序的最佳化,希爾排序對於大的亂序資料具有很好的處理能力
*
*/

function heerSort($arr) {
    $len = count($arr);
    $tmp = ‘‘;
    $h = (int)$len/2;
    $k = 0;
    while($h >=1) {
    $k++;
        for($i=$h;$i<$len;$i++) {
                $k++;//排序 $arr[i],$arr[$i-h],....,$arr[i-n*h]
            for($j=$i;$j >= $h && ($arr[$j-$h] > $arr[$j]);$j--) {
                $tmp = $arr[$j-$h];
                $arr[$j-$h] = $arr[$j];
                $arr[$j]  = $tmp;
                $k++;
            }
        }
        $h = (int)$h/2;
    }
    echo $k;
 return $arr;
}
print_r(heerSort($arr));

php實現的冒泡,插入排序,希爾排序,歸併排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.