多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
#### 冒泡排序 $a=array(9,3,4,5,7,4,2,6); $n=count($a); //个数 for($i=0; $i<$n-1; ++$i) { for($k=0; $k<$n-$i-1; ++$k) { if($a\[$k\]>$a\[$k+1\]) { $t=$a\[$k\]; $a\[$k\]=$a\[$k+1\]; $a\[k+1\]=$t; } } } #### 选择排序 求得一个数组的最大值的下标,并将这个最大值下标的单元跟最后一个单元进行交换; 然后,继续从剩余数据中取得最大值的下标,并将这个最大值下标的单元跟剩余的最后一个单元交换以此类推 $a=array(9,3,4,5,7,4,2,6); $n=count($a); //个数 for($i=0; $i<$n-1; ++$i) { $max=$a\[0\]; //找最大值先要取得第一项的值 $pos=0; //找最大值下标,也要先取得第一项的下标 for($k=0; $k<$n-$i; ++$k) { if($a\[$k\] > $max) { $max=$a\[$k\]; $pos=$k; } } $t=$a\[$pos\]; //最大单元的值 $a\[$pos\]=$a\[$n-$i-1\]; //$n-$i-1就是剩余数据中的最后一个单元的下标 $a\[$n-$i-1\]=$t; } #### 二分查找法 前提:针对的是索引数组,针对的是已经排好序的数组 //$arr要查找的数组,$s要找的数字,$begin开始位置,$end结束位置 function binary\_search($arr, $s, $begin, $end) { $mid=floor( ($begin+$end)/2 ); //定位中间的位置 $mid\_value=$arr\[$mid\]; //取得中间项的值 if($mid\_value == $s) { return true; } else if($mid\_value > $s) { if($begin > $mid-1) { //如果开始位置都比结束位置大了 return false; } $re=binary\_search($arr, $s, $begin, $mid-1); //中间项比要找的$s大,就去左边找 } else { if($mid+1 > $end) { //如果开始位置都比结束位置大了,表示找不到了 return false } $re=binary\_search($arr, $s, $begin, $mid-1); //中间项比要找的$s小,就去右边找 } return $re; }