class Mopao{
//权限修饰符
//public 公共的 类内 类外 继承 都可调用
//private 私有的 只可以类内调用
//protected 受保护的 父类和子类 可以调用
public function bubbleSort($arr){
$count = count($arr);
//数组中的元素是否小于1,如果小于返回数组
if($count<=1) return $arr;
$side = $arr[0];
//定义两个数组
$right = [];
$lift = [];
for($i=1;$i<$count;$i++){
if($arr[$i]<$side){
$lift[] = $arr[$i];
}else{
$right[] = $arr[$i];
}
}
//使用递归
$right = $this->bubbleSort($right);
$lift = $this->bubbleSort($lift);
//合并两个数组
return array_merge($lift,[$side],$right);
}
//冒泡排序
//数组中相邻的两个数 依次比较大小 如果符合我们的条件则不变 不符合条件的调换两个数的位置
/*
@content 冒泡排序
@params $arr array 需要排序的无序数组
@return $arr array 排好序的有序数组
*/
public function BubbleSort($arr)
{
$len = count($arr);
//控制循环的层数
for ($i=1;$i<$len;$i++) {
//控制比较的次数
for ($j=0;$j<$len-$i;$j++) {
if ($arr[$j] > $arr[$j+1]) {
list($arr[$j],$arr[$j+1]) = [$arr[$j+1],$arr[$j]];
}
}
}
return $arr;
}
/*
@content 快速排序
@params $arr array 需要排序的无序数组
@return $arr array 排好序的有序数组
*/
public function QuickSort($arr)
{
$len = count($arr);
if ($len <=1) {
return $arr;
}
//定义我们的标杆
$base = $arr[0];
$big = [];
$small = [];
for ($i=1;$i<$len;$i++) {
if ($arr[$i] > $base) {
$big[] = $arr[$i];
} else {
$small[] = $arr[$i];
}
}
$left = $this->QuickSort($small);
$right = $this->QuickSort($big);
$arr = array_merge($left,[$base],$right);
return $arr;
}
/*
@content 获取不重复的三位数
@params $arr array 长度为5的不重复索引数组
@returnn $data array 所有符合条件的数的集合
*/
public function GetNum($arr)
{
$len = count($arr);
$data = [];
for ($i=0;$i<$len;$i++) {
if ($arr[$i] ==0) continue;
for ($j=0; $j < $len; $j++) {
for ($k=0; $k < $len ; $k++) {
if ($arr[$i] !=$arr[$j] && $arr[$i] != $arr[$k] && $arr[$j] != $arr[$k]) {
$data[] = $arr[$i].$arr[$j].$arr[$k];
}
}
}
}
return $data;
}
/*
@content 选择排序
@params $arr array 无序索引数组
@returnn $data array 排好序的有序数组
*/
public function SelectSort($arr)
{
$len = count($arr);
for ($i=0;$i<$len-1;$i++) {
//我们认为的最小值的位置
$min = $i;
for ($j=$i+1;$j<$len;$j++) {
if ($arr[$min] > $arr[$j]) {
$min = $j;
}
}
if($min != $i) {
list($arr[$min],$arr[$i]) = [$arr[$i],$arr[$min]];
}
}
return $arr;
}
/*
@content 插入排序
@params $arr array 有序数组插入一个新元素后的结果
@returnn $arr array 排好序的有序数组
*/
public function InsertSort($arr)
{
$len = count($arr);
for ($i=1;$i<$len;$i++) {
for ($j=$i-1;$j>=0;$j--) {
if ($arr[$j] > $arr[$j+1]) {
list($arr[$j+1],$arr[$j]) = [$arr[$j],$arr[$j+1]];
} else {
break;
}
}
}
return $arr;
}
}
//实例化
$obj = new Mopao;
//打乱的数组
$arr = array(1,121212,3,2,5,99,4,9,7);
//调用方法
$info = $obj->bubbleSort($arr);
echo "<pre>";
print_r($info);exit;