PHP四大基本排序演算法例項
概述:PHP四大基本排序演算法包括:氣泡排序法,快速排序法,選擇排序法,插入排序法。
1. 氣泡排序
思路分析:在要排序的一組數中,對當前還未排好的序列,從前往後對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即,每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。
程式碼實現:
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function bubbleSort($arr)
{
$len=count($arr);
//該層迴圈控制 需要冒泡的輪數
for($i=1;$i
{ //該層迴圈用來控制每輪 冒出一個數 需要比較的次數
for($k=0;$k
{
if($arr[$k]>$arr[$k+1])
{
$tmp=$arr[$k+1];
$arr[$k+1]=$arr[$k];
$arr[$k]=$tmp;
}
}
}
return $arr;
}
2. 選擇排序
程式碼實現:
function selectSort($arr) {
//雙重迴圈完成,外層控制輪數,內層控制比較次數
$len=count($arr);
for($i=0; $i
//先假設最小的值的位置
$p = $i;
for($j=$i+1; $j
//$arr[$p] 是當前已知的最小值
if($arr[$p] > $arr[$j]) {
//比較,發現更小的,記錄下最小值的位置;並且在下次比較時採用已知的最小值進行比較。
$p = $j;
}
}
//已經確定了當前的最小值的位置,儲存到$p中。如果發現最小值的位置與當前假設的位置$i不同,則位置互換即可。
if($p != $i) {
$tmp = $arr[$p];
$arr[$p] = $arr[$i];
$arr[$i] = $tmp;
}
}
//返回最終結果
return $arr;
}
3.插入排序
思路分析:在要排序的一組數中,假設前面的數已經是排好順序的,現在要把第n個數插到前面的有序數中,使得這n個數也是排好順序的。如此反覆迴圈,直到全部排好順序。
程式碼實現:
function insertSort($arr) {
$len=count($arr);
for($i=1, $i
$tmp = $arr[$i];
//內層迴圈控制,比較並插入
for($j=$i-1;$j>=0;$j--) {
if($tmp
//發現插入的元素要小,交換位置,將後邊的元素與前面的元素互換
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
} else {
//如果碰到不需要移動的元素,由於是已經排序好是陣列,則前面的就不需要再次比較了。
break;
}
}
}
return $arr;
}
4.快速排序
思路分析:選擇一個基準元素,通常選擇第一個元素或者最後一個元素。透過一趟掃描,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素。此時基準元素在其排好序後的正確位置,然後再用同樣的方法遞迴地排序劃分的兩部分。
程式碼實現:
function quickSort($arr) {
//先判斷是否需要繼續進行
$length = count($arr);
if($length <= 1) {
return $arr;
}
//選擇第一個元素作為基準
$base_num = $arr[0];
//遍歷除了標尺外的所有元素,按照大小關係放入兩個陣列內
//初始化兩個陣列
$left_array = array(); //小於基準的
$right_array = array(); //大於基準的
for($i=1; $i
if($base_num > $arr[$i]) {
//放入左邊陣列
$left_array[] = $arr[$i];
} else {
//放入右邊
$right_array[] = $arr[$i];
}
}
//再分別對左邊和右邊的陣列進行相同的排序處理方式遞迴呼叫這個函式
$left_array = quick_sort($left_array);
$right_array = quick_sort($right_array);
//合併
return array_merge($left_array, array($base_num), $right_array);
}
轉載地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30133494/viewspace-1434016/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- javascript排序各種演算法例項程式碼JavaScript排序演算法
- PHP 中四大經典排序演算法PHP排序演算法
- PHP四種基本排序演算法示例PHP排序演算法
- PHP實現四種基本排序演算法PHP排序演算法
- DES演算法例項詳解演算法
- 基本排序演算法排序演算法
- PHP 四種基本排序演算法的程式碼實現PHP排序演算法
- 自然分類演算法例項程式碼分享演算法
- 搞懂基本排序演算法排序演算法
- PHP 排序演算法之希爾排序PHP排序演算法
- WebGIS中一些功能演算法例項Web演算法
- 排序演算法:插入排序演算法 PHP 版排序演算法PHP
- PHP 排序演算法之選擇排序PHP排序演算法
- PHP 排序演算法之插入排序PHP排序演算法
- 排序演算法:插入折半排序 PHP 版排序演算法PHP
- 封裝type方法例項封裝
- 夥伴演算法例子演算法
- PHP演算法之四大基礎演算法PHP演算法
- 演算法之快速排序(php版)演算法排序PHP
- javascript this 用法例項程式碼解析JavaScript
- Java的clone()用法例項解析Java
- 邊界值分析法例項
- javascript 靜態方法和例項方法例項JavaScript
- 貝葉斯分類演算法例項 --根據姓名推測男女演算法
- 貝葉斯分類演算法例項 –根據姓名推測男女演算法
- 基本排序演算法的Python實現排序演算法Python
- PHP 排序演算法原理及總結PHP排序演算法
- PHP 演算法02之插入排序PHP演算法排序
- php實現4種排序演算法PHP排序演算法
- 經典排序演算法PHP實現排序演算法PHP
- PHP常見排序演算法學習PHP排序演算法
- php常用的四種排序演算法PHP排序演算法
- JavaScript閉包原理與用法例項JavaScript
- JavaScript建立物件方法例項小結JavaScript物件
- RNN二進位制加法例項RNN
- charAt()函式用法例項程式碼函式
- $.ajax()用法例項程式碼介紹
- android中部分Intent用法例項AndroidIntent