php常見的一些基礎演算法

來源:互聯網
上載者:User

標籤:交換   演算法   turn   有序   快速排序   數字   迴圈   位置   sel   

1.冒泡演算法

冒泡演算法是將一個未排序的序列,從前往後對相鄰的兩個值依次進行對比和調整,大的值下沉,小的值上冒。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);function bsort($arr){    $len = count($arr);    for($i=1;$i<$len;$i++){        for($k=0;$k<$len-$i;$k++){            if($arr[$k]>$arr[$k+1]){                $tmp=$arr[$k+1];                $arr[$k+1]=$arr[$k];                $arr[$k]=$tmp;            }        }    }    return $arr;}

2.選擇排序

選擇排序是在一組未排序的序列中選出最小的一個數與第一個位置資料交換,在剩下的序列中選出第二小的一個數放在第二個位置,直到倒數第二個數字和倒數第一個數字比較為止。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);function selectsort($arr){    $len = count($arr);    for($i=0;$i<$len-1;$i++){        $mixm=$i;        for($j=$i+1;$j<$len;$j++){            if($arr[$mixm]>$arr[$j]){                $mixm = $j;            }            if($mixm!=$i){                $tmp=$arr[$mixm];                $arr[$mixm]=$arr[$i];                $arr[$i]=$tmp;            }        }            }    return $arr;}

3.插入排序

在要排序的一組數組中,假如前面的數已經排序好順序的,現在要將第n個數插入到已經排序的數組中,使得插入之後任然是有序的排序。如此迴圈,直到排好為止。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);function insertsort($arr){    $len = count($arr);    for($i=1;$i<$len;$i++){        $tmp=$arr[$i];        for($j=$i-1;$j>=0;$j--){            if($tmp<$arr[$j]){                $arr[$j+1]=$arr[$j];                $arr[$j]=$tmp;            }else{                break;            }        }            }    return $arr;}

4.快速排序

選擇一個基準元素,通常選擇第一個元素或者最後一個元素。通過一趟掃描,將待排的序列分成兩個部分,一部分比基準元素小,另一部分比基準元素大,此時基準元素已經在其排好序列的正確位置,然後使用同樣的辦法遞迴的排序劃分的兩部分。

$arr = array(12,45,23,25,14,9,5,46,56,98,57);function quicksort($arr){    $len = count($arr);    if($len<=1){        return $arr;    }    $base=$arr[0];    $minArr=array();    $maxArr=array();    for($i=1;$i<$len;$i++){        if($base>$arr[$i]){            $minArr[]=$arr[$i];        }else{            $maxArr[]=$arr[$i];        }    }    $minArr=quicksort($minArr);    $maxArr=quicksort($maxArr);    return array_merge($minArr,array($base),$maxArr);}

 

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.