php實(shí)現(xiàn)排序算法的方法:1、冒泡排序,兩兩相比,每循環(huán)一輪就不用再比較最后一個(gè)元素;2、選擇排序,選定一個(gè)作為基本值,剩下的和這個(gè)比較,再調(diào)換位置。
php實(shí)現(xiàn)排序算法的方法:
1、冒泡排序:
兩兩相比,每循環(huán)一輪就不用再比較最后一個(gè)元素了,因?yàn)樽詈笠粋€(gè)元素已經(jīng)是最大或者最小。
function maopaoSort ($list) { $len = count($list); for ($i = 0; $i < $len - 1; $i++) { for ($j = 0; $j < $len - $i - 1; $j++) { if ($list[$j] > $list[$j + 1]) { $tmp = $list[$j]; $list[$j] = $list[$j + 1]; $list[$j + 1] = $tmp; } } } return $list; }
2、選擇排序:
選定一個(gè)作為基本值,剩下的和這個(gè)比較,然后調(diào)換位置。
function xuanzeSort ($list) { $len = count($list); for ($i = 0; $i < $len - 1; $i++) { $pos = $i; for ($j = $i + 1; $j < $len; $j++) { if ($list[$pos] > $list[$j]) { $pos = $j; } } if ($pos != $i) { $tmp = $list[$pos]; $list[$pos] = $list[$i]; $list[$i] = $tmp; } } return $list; }
3、快速排序:
原理就是拿出一個(gè)標(biāo)尺值,然后分為左右兩個(gè)數(shù)組,分別對(duì)比
function kuaisuSort ($list) { $len = count($list); if ($len <= 1) {//遞歸出口 return $list; } $base = $list[0];//選擇一個(gè)比較值 $leftList = $rightList = []; for ($i = 1; $i < $len; $i++) { if ($base > $list[$i]) { $leftList[] = $list[$i]; } else { $rightList[] = $list[$i]; } } //遞歸分別再處理左右兩邊的數(shù)組 $leftList = kuaisuSort($leftList); $rightList = kuaisuSort($rightList); return array_merge($leftList, [$base], $rightList); }
4、插入排序:
假設(shè)前面的數(shù)都是排好順序的,要把第n個(gè)數(shù)插入到有序里
function charuSort ($list) { $len = count($list); for ($i = 1; $i < $len; $i++) { $tmp = $list[$i];//獲取對(duì)比元素 for ($j = $i - 1; $j > 0; $j--) { if ($list[$j] > $tmp) { $list[$j + 1] = $list[$j]; $list[$j] = $tmp; } else { break; } } } return $list; }
相關(guān)學(xué)習(xí)推薦:php編程(視頻)