这篇文章主要介绍了php中的四种排序算法,有一定的参考价值,感兴趣的朋友可以一下,希望可以帮助到你!
(1)快速排序
原理:选择数组中的一个数(通常是第一个数)作为基准,在排序过程中,定义两个数组。第一次比较时,将大于它的数放在右边数组中,将小于它的数放在左边数组中。接下来采用递归的方式将左右两边的数组做同样处理,直到数组中只剩一个元素的时候结束递归,最后将数组合并。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function quick_sort( $arr ) {
if (! is_array ( $arr )) return false;
$length = count ( $arr );
if ( $length <=1) return $arr ;
$left = $right = array ();
for ( $i =1; $i < $length ; $i ++) {
if ( $arr [ $i ]< $arr [0]) {
$left [] = $arr [ $i ];
} else {
$right [] = $arr [ $i ];
}
}
$left = quick_sort( $left );
$right = quick_sort( $right );
return array_merge ( $left , array ( $arr [0]), $right );
}
|
Copy after login
(2)冒泡排序
原理:数组中相邻的两个元素依次进行比较,大的数字排在后面,小的数字放在前面,这样保证每轮比较放到后面的都是此次比较最大的数字。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function bubble_sort( $arr ) {
if (! is_array ( $arr )) return false;
if ( count ( $arr )<=1) return $arr ;
$length = count ( $arr );
for ( $i =1; $i < $length ; $i ++) {
for ( $k =0; $k < $length - $i ; $k ++) {
if ( $arr [ $k ]> $arr [ $k +1]) {
$temp = $arr [ $k ];
$arr [ $k ] = $arr [ $k +1];
$arr [ $k +1] = $temp ;
}
}
}
return $arr ;
}
|
Copy after login
(3)插入排序
原理:在插入第n个数的时候,我们假设n之前的数字全部排序完毕,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function insert_sort ( $arr ) {
$length = count ( $arr );
for ( $i =1; $i < $length ; $i ++) {
$tmp = $arr [ $i ];
for ( $k = $i -1; $k >=0; $k --) {
if ( $tmp < $arr [ $k ]) {
$arr [ $k +1] = $arr [ $k ];
$arr [ $k ] = $tmp ;
} else {
break ;
}
}
}
return $arr ;
}
|
Copy after login
(4)选择排序
原理:第一次,将数组中最小的数字拿出来放在第一位,第二次,将数组中第二小的数字拿出来放在第二位,以此类推,直至排序完毕。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function select_sort ( $arr ) {
$length = count ( $arr );
for ( $i =0; $i < $length -1; $i ++) {
$p = $i ;
for ( $k = $i +1; $k < $length ; $k ++) {
if ( $arr [ $p ]> $arr [ $k ]) {
$temp = $arr [ $p ];
$arr [ $p ] = $arr [ $k ];
$arr [ $k ] = $temp ;
}
}
}
return $arr ;
}
|
Copy after login
【相关教程推荐】
1. php编程从入门到精通全套视频教程
2. php从入门到精通
3. bootstrap教程