다음은 가장 일반적인 알고리즘 중 일부와 이를 PHP에서 구현하는 방법입니다.
1. 버블 정렬
- function bubble_sort($arr) {
- $n=count($arr);
- for( $ i=0;$i<$n-1;$i ){
- for($j=$i 1;$j<$n;$j ) {
- if($arr[$j] < ;$arr[$i]) {
- $temp=$arr[$i];
- $arr[$i]=$arr[$j];
- $arr[$j]= $ temp;
- }
- }
- }
- return $arr;
- }
코드 복사
2. 병합 정렬
- 함수 Merge(&$arr, $left, $mid, $right) {
- $i = $left ;
- $j = $mid 1;
- $k = 0;
- $temp = array();
- while ($i <= $mid && $j <= $right)
- {
- if ($arr[$i] <= $arr[$j])
- $temp[$k ] = $arr[$i ];
- else
- $ temp[$k ] = $arr[$j ];
- }
- while ($i <= $mid)
- $temp[$k ] = $arr[$i ];
- while ($j <= $right)
- $temp[$k ] = $arr[$j ];
- for ($i = $left, $j = 0; $i <= $right ; $i , $j )
- $arr[$i] = $temp[$j];
- }
-
- 함수 MergeSort(&$arr, $left, $right)
- {
- if ($left < $right)
- {
- $mid = Floor(($left $right) / 2);
- MergeSort($arr, $left, $mid);
- MergeSort($arr, $mid 1, $right);
- Merge($arr, $left, $mid, $right);
- }
- }
코드 복사
3. 이진 검색 - 재귀
- function bin_search($arr,$low,$high,$value) {
- if($low> ;$high)
- false 반환;
- else {
- $mid=floor(($low $high)/2);
- if($value==$arr[$mid])
- return $mid;
- elseif($value<$arr[$mid])
- return bin_search($arr,$low,$mid-1,$value);
- else
- return bin_search($arr,$mid 1,$high,$value);
- }
- }
코드 복사
4. 이진 검색 - 비재귀
- function bin_search($arr,$low,$high,$value) {
- while( $ low<=$high) {
- $mid=floor(($low $high)/2);
- if($value==$arr[$mid])
- return $mid;
- elseif($value<$arr[$mid])
- $high=$mid-1;
- else
- $low=$mid 1;
- }
- return false;
- }
코드 복사
5. 빠른 정렬
- functionquick_sort($arr) {
- $n=count($arr);
- if($ n<=1)
- $arr;
- $key=$arr[0];
- $left_arr=array();
- $right_arr=array();
- for($ 반환) i=1;$i<$n;$i ) {
- if($arr[$i]<=$key)
- $left_arr[]=$arr[$i];
- else
- $right_arr[]=$arr[$i];
- }
- $left_arr=quick_sort($left_arr);
- $right_arr=quick_sort($right_arr);
- return array_merge($ left_arr,array($key),$right_arr);
- }
코드 복사
6、选择排序
- function select_sort($arr) {
- $n=count($arr);
- for($ i=0;$i<$n;$i ) {
- $k=$i;
- for($j=$i 1;$j<$n;$j ) {
- if( $arr[$j]<$arr[$k])
- $k=$j;
- }
- if($k!=$i) {
- $temp=$arr[ $i];
- $arr[$i]=$arr[$k];
- $arr[$k]=$temp;
- }
- }
- return $arr;
- }
复代码
7、插入排序
- function insertSort($arr) {
- $n=count($arr);
- for($ i=1;$i<$n;$i ) {
- $tmp=$arr[$i];
- $j=$i-1;
- while($arr[$j]> ;$tmp) {
- $arr[$j 1]=$arr[$j];
- $arr[$j]=$tmp;
- $j--;
- if($ j<0)
- break;
- }
- }
- return $arr;
- }
复代码
|