PHP基础算法

1 <?php
  2 class hdfSort
  3 {
  4     public function bubbleSort($arr)
  5     {/*{{{*/
  6         if (empty($arr) || (1==count($arr)))
  7         {
  8             return $this->arr;
  9         }
 10         for ($j=1;$j<count($arr);$j++)
 11         {
 12             for ($i=0;$i<count($arr)-$j;$i++)
 13             {
 14                 if ($arr[$i]>$arr[$i+1])
 15                 {
 16                     $tmp = $arr[$i];
 17                     $arr[$i] = $arr[$i+1];
 18                     $arr[$i+1] = $tmp;
 19                 }
 20             }
 21         }
 22         return $arr;
 23     }/*}}}*/
 24
 25     public function quickSort($arr)
 26     {/*{{{*/
 27         if (empty($arr) || (1==count($arr)))
 28         {
 29             return $arr;
 30         }
 31         $refer = $arr[0];
 32         $leftArr = array();
 33         $rightArr = array();
 34         for ($i=0;$i<count($arr);$i++)
 35         {
 36             if ($arr[$i] < $refer)
 37             {
 38                 $leftArr[] = $arr[$i];
 39             }
 40             if ($arr[$i] > $refer)
 41             {
 42                 $rightArr[] = $arr[$i];
 43             }
 44         }
 45         $leftArr = $this->quickSort($leftArr);
 46         $rightArr = $this->quickSort($rightArr);
 47         return array_merge($leftArr, array($refer), $rightArr);

 48     }/*}}}*/

 50     public function binary_search($key, $arr)
 51     {/*{{{*/
 52         if (empty($key)) return  "key is empty";
 53         if (empty($arr)) return  "arr is empty";
 54         $min = 0;
 55         $max = count($arr)-1;
 56         while ($min < $max)
 57         {
 58             $mid = intval(($min+$max)/2);
 59             if ($key == $arr[$mid])
 60             {
 61                 return $key.'--'.$mid;
 62             }
 63             elseif ($key < $arr[$mid])
 64             {
 65                 $max = $mid -1;
 66             }
 67             else
 68             {
 69                 $min = $mid + 1;
 70             }
 71         }
 72         return "not found";
 73     }/*}}}*/
 74
 75     public function order_search($target, $arr)
 76     {/*{{{*/
 77         if (empty($arr)) return "not found";
 78         foreach ($arr as $key=>$value)
 79         {
 80             if ($target == $value)
 81             {
 82                 return "$key"."------"."$value";
 83             }
 84         }
 85         return "not found";
 86     }/*}}}*/
 87
 88     public function select_sort($arr)
 89     {/*{{{*/
 90         if (empty($arr) || (1==count($arr)))
 91         {
 92             return $arr;
 93         }
 94         for ($i = 0; $i < count($arr) -1; $i++){
 95             $tmp = $i;
 96             $tmpVal = $arr[$i];
 97             for ($j = $i +1; $j < count($arr); $j++)
 98             {
 99                 if ($arr[$j]<$tmpVal)

100                 {
101                     $tmpVal = $arr[$j];
102                     $tmp = $j;
103                 }
104             }
105             if ($tmp != $i)
106             {
107                 $temp = $arr[$i];
108                 $arr[$i] = $arr[$tmp];
109                 $arr[$tmp] = $temp;
110             }
111         }
112         return $arr;
113     }/*}}}*/
114
115     public function insert_sort($arr)
116     {/*{{{*/
117         if (empty($arr) || (1==count($arr)))
118         {
119             return $arr;
120         }
121         for ($i=1;$i<count($arr);$i++)
122         {
123             $temp = $arr[$i];
124             $j = $i;
125             $tt = $i;
126             while ($j>0)
127             {
128                 if ($temp < $arr[$j-1])
129                 {
130                     $arr[$j] = $arr[$j-1];
131                     $tt = $j -1;
132                 }
133                 $j--;
134             }
135             $arr[$tt] = $temp;
136         }
137         return $arr;
138     }/*}}}*/
139
140     public function cardCacul($card_num = 54)
141     {/*{{{*/
142         $tmp = array();
143         for ($i=0;$i<$card_num;$i++)
144         {
145             $tmp[$i] = $i;
146         }
147         for ($i=0;$i<$card_num;$i++)
148         {
149             $index = rand(0, $card_num-$i-1);                                                                                                                                                                                                                   

150             $arr[] = $tmp[$index];
151             unset($tmp[$index]);
152             $tmp = array_values($tmp);
153         }
154         return $arr;
155     }/*}}}*/
156
157 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值