日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php复习,PHP排序算法的复习和总结

發布時間:2025/3/11 php 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php复习,PHP排序算法的复习和总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

直接上代碼吧!

/*

* 插入排序(一維數組)

* 每次將一個待排序的數據元素,插入到前面已經排好序的數列中的適當的位置,使數列依然有序;直到待排序的數據元素全部插入完成為止。

*/

function insertSort($arr){

if(!is_array($arr) || count($arr)==0){

return $arr;

}

$count = count($arr);

for($i=1; $i

if(isset($arr[$i])){

$tmp = $arr[$i]; //獲取后一個元素的值

$j = $i - 1; //獲取前面的下標

while($arr[$j] > $tmp){ //如果前面一個比后面一個大, 這里是從小到大

$arr[$j+1] = $arr[$j]; //把小的元素和前面的對換,直到移動到合適的位置,在移動下一個

$arr[$j] = $tmp;

$j--;

}

}

}

return $arr;

}

/*

* 選擇排序(一維數組)

* 每一趟從待排序的數據元素中選出最小(最大)的一個元素,順序放在已排好序的數列的最后,直到全部待排序的數據元素排完。

*/

function selectSort($arr){

if(!is_array($arr) || count($arr) == 0)

{

return $arr;

}

$count = count($arr);

for($i=0; $i

$k = $i;

for($j=$i+1; $j

if ($arr[$k] > $arr[$j])

$k = $j; //找出最小的

if ($k != $i){

$tmp = $arr[$i];

$arr[$i] = $arr[$k];

$arr[$k] = $tmp;

}

}

}

return $arr;

}

/*

* 冒泡排序(一維數組)

* 兩兩比較待排序數據元素的大小,發現兩個數據元素的次序相反即進行交換,直到沒有反序的數據元素為止

*/

function bubbleSort($array){

$count = count($array);

if ($count <= 0) {

return false;

}

for($i=0; $i

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

if ($array[$j] < $array[$j-1]){ //比較找到的數進行交換

$tmp = $array[$j];

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

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

}

}

}

return $array;

}

/*

* 快速排序(一維數組)

*

*/

function quickSort($array){

if (count($array) <= 1){

return $array;

}

$key = $array[0];

$left_arr = array();

$right_arr = array();

for ($i=1; $i

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

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

}else{

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

}

}

$left_arr = quickSort($left_arr);

$right_arr = quickSort($right_arr);

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

}

/**

* 按照元素的值進行排序

* strOrder 為排列的順序 asc 升序 desc 降序

*/

function sortByVal($arr,$strOrder='asc')

{

if(!is_array($arr) || count($arr)==0)

{

return $arr;

}

$arrReturn = array();

foreach($arr as $key=>$val)

{

$arrKey[] = $key;

$arrVal[] = $val;

}

$count = count($arrVal);

if($count)

{

//創建key的順序數組

for($key=0;$key

{

$arrKeyMap[$key] = $key;

}

//對值進行排序

for($i=0;$i

{

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

{

//

$bol = $strOrder == 'asc' ? $arrVal[$j]$arrVal[$j-1];

if($bol){

$tmp = $arrVal[$j];

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

$arrVal[$j-1] = $tmp;

//值的冒泡排序,引起key的數組的交互

$keytmp = $arrKeyMap[$j];

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

$arrKeyMap[$j-1] = $keytmp;

}

}

}

if(count($arrKeyMap))

{

foreach ($arrKeyMap as $val)

{

$arrReturn[] = $arrKey[$val];

}

}

return $arrReturn;

}

}

/**

* 使用原生的函數進行數組按照值進行排列

*/

function arraySortByVal($arr,$keys,$type='asc'){

$keysvalue = $new_array = array();

foreach ($arr as $k=>$v){

$keysvalue[$k] = $v[$keys];

}

if($type == 'asc'){

asort($keysvalue);

}else{

arsort($keysvalue);

}

reset($keysvalue);

foreach ($keysvalue as $k=>$v){

$new_array[$k] = $arr[$k];

}

return $new_array;

}

對于下面的2個對于array的值進行排序的方法一個是自己實現的一個是使用了原生的PHP函數的,其實排序對于少量數據一般就單頁的數據量的數據還是可以的,如果涉及到大量的數據的排序,建議可以整合到MYSQL的基礎類中來進行。

總結

以上是生活随笔為你收集整理的php复习,PHP排序算法的复习和总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。