php排序演算法

來源:互聯網
上載者:User
簡介:這是php排序演算法的詳細頁面,介紹了和php,有關的知識、技巧、經驗,和一些php源碼等。

class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=339153' scrolling='no'>

假設以下都是從小到大排序:

1、冒泡排序(穩定排序)

個人理解:冒泡排序就是兩個迴圈,大迴圈套小迴圈,從頭或者尾部開始比較連續的兩個元素的大小,如果不符合自己的排序標準(由小到大,或由大到小),則交換其值。

function bubble_sort($array){

  $count=count($array);

  for($i=0;$i<$count;$i++){

    for($j=$count-1;$j>$i;$j--){

      if($array[$j]<$array[$j-1]){//如果後面的值小於前面的元素,則交換值

        $temp=$array[$j];

        $array[$j]=$array[$j-1];

        $array[$j-1]=$temp;

      }

    }

  }

}

2、快速排序(又稱數組排序)(不穩定排序)

個人理解:在要排序的數組中找一個關鍵資料(標準值),通常把數組的第一個元素當成關鍵資料,然後迴圈數組,從第二個元素開始依次將元素值與關鍵資料進行比較,如果小於關鍵資料,就把該元素放在關索引值左邊,如果答應關鍵資料,就把該元素放在關鍵資料右邊,將關索引值左邊元素存成數組,右邊元素也存成數組,再分別進行以上排序,得到的數組與關鍵資料合併數組後就排序成功

function quick_sort($array){

  $count=count($array);

  if($count<=1) retrun $array; //如果數組只有一個元素或為空白,則直接返回數組,不用排序了

  $key=$array[0]; //將數組第一個元素設定為關鍵資料

  $left_arr=array();

  $right_ar=array();

  for($i=1;$i<$count;$i++){

    if($array[$i]<=$key)

      $left_arr[]=$array[$i];

    else

      $right_arr[]=$array[$i];

  }

  $left_arr=quick_sort($left_arr);

  $right_arr=quick_sort($right_arr);

  //返回合并後的數組

  return array_merge($left_arr,array($key),$right_arr);

}

3、選擇排序(不穩定排序)

個人理解:選擇排序就是在要排序的數組中選出最小值與第一個元素交換值,然後再剩下的元素中選出最小值與第二個元素交換值,如此迴圈到倒數第二個元素和最後一個元素比較為止。

function select_sort($array){

  $count=count($array);

  if($count<=1) return $array;

  for($i=0;$i<$count-1;$i++){

    $min=$array[$i]; //假設當前元素為數最小,比較後再調整

    for($j=$i+1;$j<$count;$j++){

      if($array[$j]<$min){

        $min=$array[$j];

        $key=$j; //將此時值最小的元素的鍵名記下,

      }

    }

    if($min!=$array[$i]){ //如果min在迴圈中改變了,就需要交換資料

      $temp=$array[$i];

      $array[$i]=$array[$key];

      $array[$key]=$temp;

    }

  }

}

好了,先總結這三種排序演算法吧。。。。呵呵

愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具

http://biancheng.dnbcw.info/php/339153.html pageNo:8
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.