冒泡排序
/**
* 实现思路:
* 双重循环,外层控制冒泡论数。
* 内层控制每轮冒泡的比较次数。
**/
function bubble_sort( $array)
{
$count = count( $array);
for( $i=0; $i< $count-1; $i++){
for( $j=0; $j < $count-$i-1; $j++){
if( $array[$j] > $array[$j+1]){
$tmp = $array[$j];
$array[$j] = $array[$j+1];
$array[$j+1] = $tmp;
}
}
}
return $array;
}
选择排序
/**
* 实现思路:
* 双重循环,外层控制轮数,内层控制比较次数。
*
* 假设最小为第一个,然后循环找出最小值。
* 外层循环进行交换
**/
function select_sort( $array)
{
$count = count( $array);
for( $i=0;$i< $count-1; $i++){
$m = $i;
for( $j=$i+1; $j < $count; $j++){
if( $array[$m] > $array[$j]){
$m = $j;
}
}
if( $m != $i){
$tmp = $array[$i];
$array[$i] = $array[$m];
$array[$m] = $tmp;
}
}
return $array;
}
插入排序
/**
* 双重循环,外层控制轮数,内层循环控制,比较并插入。
* 选择当前数。
* 内层循环与前一个数对比大小,进行交换。
**/
function insert_sort( $array)
{
$count = count( $array);
for( $i=1;$i < $count; $i++){
$tmp = $array[$i];
for( $j=$i-1; $j >= 0; $j--){
if( $tmp < $array[$j]){
$array[$j+1] = $array[$j];
$array[$j] = $tmp;
}else{
break;
}
}
}
return $array;
}
快速排序
/**
* 先判断是否继续运行
* 选择一个基础数,然后循环对比区分大小放入两个数组
* 递归排序两个数组
* 合并左边、基础数、右边
**/
function quick_sort( $array)
{
$count = count( $array);
if( $count <= 1){
return $array;
}
$tmp = $array[0];
$left = $right = [];
for( $i=1; $i<$count; $i++){
if( $array[$i] < $tmp){
$left[] = $array[$i];
}else{
$right[] = $array[$i];
}
}
$left = quick_sort( $left);
$right = quick_sort( $right);
return array_merge( $left, array( $tmp),$right);
}

被折叠的 条评论
为什么被折叠?



