本文總結了一下常用的7種排序方法,並用php語言實現。
1、直接插入排序
/** 直接插入排序,插入排序的思想是:當前插入位置之前的元素有序,
* 若插入當前位置的元素比有序元素最後乙個元素大,則什麼也pqbkgkiqpn不做,
* 否則在有序序列中找到插入的位置,並插入
*/function insertsort($arr) else
} }
} return $arr;
}2、氣泡排序
/*氣泡排序,氣泡排序思想:進行 n-1 趟氣泡排序, 每趟兩兩比較調整最大值到陣列(子陣列)末尾
*/function bubblesort($arr)
}pqbkgkiqpn
} return $arr;
}3、簡單選擇排序
/*簡單選擇排序, 簡單排序思想:從陣列第乙個元素開始依次確定從小到大的元素
*/function selectsort($arr)
}if($k != $i)
} return $arr;
}4、希爾排序
/*希爾排序,希爾排序原理:將陣列按指定步長分隔成若干子串行,然後分別對子序列進行排序(在這是直接)
*/function shepqbkgkiqpnllsort($arr) }}
$k = floor($k/2);
} return $arr;
}5、快速排序
/** 快速排序,快排思想:通過一趟排序將待排的記錄分為兩個獨立的部分,其中一部分的記錄的關鍵字均不大於
* 另一部分記錄的關鍵字,然後再分別對這兩部分記錄繼續進行快速排序,以達到整個序列有序,具體做法需要
* 每趟排序設定乙個標準關鍵字和分別指向頭乙個記錄的關鍵字和最後乙個記錄的關鍵字的指標。
* quicksort($arr, 0, count($arr) -1);
*/function quicksort(&$arr,$low,$high)
if($i < $j)
while($i < $j && $arr[$i] <= $primary)
if($i < $j)
}$arr[$i] = $primary;
quicksort($arr, $low, $i-1);
quicksort($arr, $i+1, $high);
}}6、堆排序
/*堆排序
*/// 調整子堆的為大根堆的過程,$s為子堆的根的位置,$m為堆最後乙個元素位置
function heapadjust(&$arr, $s, $m)
if($tmp >= $arr[$j] )
$arr[$s] = $arr[$j];
$s = $j;
} $arr[$s] = $tmp;
}// 堆排序
function heapsort($arr)
// 依次把根節點調換至最後乙個位置,再次調整堆為大根堆,找到次最大值,
// 依次類推得到乙個有序陣列
for($n = $len-1; $n > 0; $n--)
return $arr;
}7、歸併排序
/*歸併排序,這裡實現的是兩路歸併
*/// 分別將有序的$arr1[s..m]、$arr2[m+1..n]歸併為有序的$arr2[s..n]
function merge(&$arr1, &$arr2, $s, $m, $n)
}}// 遞迴形式的兩路歸併
function msort(&$arr1, &$arr2, $s, $t) else
}// 對一位陣列$arr[0..n-1]中的元素進行兩路歸併
function mergesort($arr)
使用經驗
若排序的記錄數目n較小時,可以採用直接插入排序和簡單選擇排序,當記錄本身資訊量較大時,用簡單選擇排序方法較好。
若待排序記錄按關鍵字基本有序,適合採用直接插入排序和氣泡排序。
若n值較大時,可以採用快速排序、堆排序和歸併排序。另外快速排序被認為是內部排序方法中最好的方法。
本文標題: 7種php基本排序實現方法
本文位址:
8種php基本排序實現方法
許多人都說演算法是程式的核心,演算法的好壞決定了程式的質量。因此對於基本的排序演算法還是應該掌握的,它是程式開發的必備工具。這裡介紹氣泡排序,插入排序,選擇排序,快速排序等等演算法,分析一下演算法的思路。1.氣泡排序 思路分析 在要排序的一組數中,對當前還未排好的序列,從前往後對相鄰的兩個數依次進行...
php實現7種常見排序
class test public function createdata sectime microtime this gettimelimit firtime,sectime return data 歸併排序開始 public function mergesort data public fun...
PHP實現四種基本排序演算法
許多人都說演算法是程式的核心,演算法的好壞決定了程式的質量。作為乙個初級phper,雖然很少接觸到演算法方面的東西。但是對於基本的排序演算法還是應該掌握的,它是程式開發的必備工具。這裡介紹氣泡排序,插入排序,選擇排序,快速排序四種基本演算法,分析一下演算法的思路。許多人都說演算法是程式的核心,演算法...