PHP基礎之排序

前言

以前簡單介紹了流程控制,函數,數組等。有興趣的能夠看看。
PHP入門之類型與運算符
PHP入門之流程控制
PHP入門之函數
PHP入門之數組
接下來介紹一下排序,排序是將一組數據,依指定的順序進行排列的過程。經常使用的排序方法有冒泡法,選擇排序法,插入排序法。php

冒泡排序法

思想:
它重複走過要排序的元素列,依次比較兩個相鄰的元素,若是順序錯誤就把它們交換過來,直到沒有須要交換的爲止。
代碼案例:html

<?php
#冒泡排序
$myarr=array(4,3,9,1,6,23.5);
function bubbleSort (&$myarr){       
    $temp=0;   #N個數排序,要排N-1次。外層控制循環多少趟
    for ($i=0;$i<count($myarr)-1;$i++){
         #控制每一趟循環的次數。
        for ($j=0;$j<count($myarr)-1-$i;$j++){
            if ($myarr[$j]>$myarr[$j+1]){
                $temp=$myarr[$j];
                $myarr[$j]=$myarr[$j+1];
                $myarr[$j+1]=$temp;
            }
        }
    }

}
bubbleSort($myarr);
print_r($myarr);  #打印數組
?>

輸出結果爲:
Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )web

選擇排序法

思想:
假設第一個爲最小(大)元素,依次比較,若是錯誤,交換順序,找到未排序序列中找到最小(大)元素,存放到排序序列的起始位置,而後,再從剩餘未排序元素中繼續尋找最小(大)元素,而後放到已排序序列的末尾。以此類推,直到全部元素均排序完畢。
代碼案例:數組

<?php
#選擇排序
$myarr=array(4,3,9,1,6,23.5);

function selectionSort (&$myarr){    
    $temp=0;
    for ($i=0;$i<count($myarr)-1;$i++){
        #將第一個值認爲是最小的值
        $minval=$myarr[$i];
        #記錄最小值的下標
        $minindex=$i;
        for ($j=$i+1;$j<count($myarr);$j++){
            if ($minval>$myarr[$j]){
                $minval=$myarr[$j];
                $minindex=$j;
            }
        }
        $temp=$myarr[$i];
        $myarr[$i]=$myarr[$minindex];
        $myarr[$minindex]=$temp;
    }
}
selectionSort($myarr);
print_r($myarr);    #打印數組
?>

輸出結果:
Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )函數

插入排序

思想:
插入排序就像咱們玩撲克牌,右手爲亂排的,咱們一張張查看,爲它找合適的位置插入到左手的有序牌中。
插入排序是指在待排序的元素中,假設前面n-1(其中n>=2)個數已是排好順序的,現將第n個數插到前面已經排好的序列中,而後找到合適本身的位置,使得插入第n個數的這個序列也是排好順序的。按照此法對全部元素進行插入,直到整個序列排爲有序的過程,稱爲插入排序。
代碼案例:code

<?php
#插入排序
$myarr=array(4,3,9,1,6,23.5);

function insertSort (&$myarr){                
    for ($i=1;$i<count($myarr);$i++){
        #這是要插入的數
        $insertval=$myarr[$i];
        #這是和插入的數進行比較
        $insertindex=$i-1;
              #知足條件說明咱們尚未找到合適的位置
        while ($insertindex>=0 && $insertval<$myarr[$insertindex]){
            $myarr[$insertindex+1]=$myarr[$insertindex];
            $insertindex--;

        }
        #插入(給$insertval找到合適的位置)
        $myarr[$insertindex+1]=$insertval;
    }
}

insertSort($myarr);
print_r($myarr);
?>

輸出結果:
Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )htm

小結

簡單介紹了一下經常使用的三種排序方法,但願對你們有所幫助。blog

相關文章
相關標籤/搜索