• 排序算法


     1 <?php
     2 
     3 $arr = array(28,43,54,62,21,66,32,78,36,76,39);
     4 $res = bubble_sort($arr);
     5 var_dump($res);
     6 
     7 $res = quick_sort($arr);
     8 var_dump($res);
     9 
    10 $hs = half_search($arr, 78);
    11 var_dump($hs);
    12 //冒泡排序
    13 function bubble_sort($arr){
    14 if(empty($arr) || !is_array($arr))    return $arr;
    15 $count=count($arr);
    16 if($count<2) return $arr;
    17 
    18 for($i=$count;$i>0;$i--){
    19 for($j=0;$j<$i;$j++){
    20 if($arr[$j]<$arr[$j-1]){
    21 $temp = $arr[$j-1];
    22 $arr[$j-1] = $arr[$j];
    23 $arr[$j] = $temp;
    24 }
    25 }
    26 }
    27 return $arr;
    28 }
    29 
    30 //快速排序
    31 function quick_sort($arr){
    32 if(!is_array($arr)) return $arr;
    33 $len = count($arr);
    34 if($len<2) return $arr;
    35 $i=rand(1, $len-1);
    36 $left = $right = array();
    37 for($j=0;$j<$len;$j++){
    38 if($j==$i) continue;
    39 if($arr[$j]<$arr[$i]){
    40 $left[] = $arr[$j];
    41 }else{
    42 $right[] = $arr[$j];
    43 }
    44 }
    45 $left = quick_sort($left);
    46 $right = quick_sort($right);
    47 $res = array_merge($left, array($arr[$i]), $right);
    48 return $res;
    49 }
    50 
    51 //二分查找
    52 function half_search($arr, $val){
    53 if(!is_array($arr)) return null;
    54 $len = count($arr);
    55 if($len<2) return $arr;
    56 
    57 $i = 0;
    58 $m = intval(($i+$len)/2);
    59 while($i<$len){
    60 
    61 if($val<$arr[$m]){//在左边
    62 $m -= 1;
    63 }elseif($val>$arr[$m]){
    64 $m += 1;
    65 }else{
    66 return $m;
    67 }
    68 }
    69 
    70 
    71 
    72 }
  • 相关阅读:
    设计模式 5 —— 工厂模式
    Java 集合系列 14 hashCode
    Java 集合系列 13 WeakHashMap
    java 多线程——quartz 定时调度的例子
    memcached 学习 1—— memcached+spring配置
    vivado SDK之找不到"platform.h"
    ubuntu上第一个hello程序
    FPGA设计中的异步复位、同步释放思想
    异步fifo的Verilog实现
    zedboard上首个驱动实践——Led
  • 原文地址:https://www.cnblogs.com/justlikeheaven/p/5666237.html
Copyright © 2020-2023  润新知