php 经典算法,冒泡算法,快速排序,选择排序,插入排序

本文介绍了四种经典的PHP排序算法:冒泡排序、快速排序、选择排序和插入排序,并提供了每种算法的具体实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    PHP最经典算法:

    1.冒泡算法,在排序过程中总是将小数往前方,大数往后放,相当于气泡上升,所以称作冒泡排序。

	$array = array(1,3,2,5,22,3,5,6,3,9,0);
        function bubble($array){
                $count = count($array);
                if($count<1){
                        return $array;
                }
                for($i = 0;$i<$count;$i++){
                        for($j = $count-1;$j>$i;$j--){
                                if($array[$j-1]>$array[$j]){
                                        $tmp = $array[$j-1];
                                        $array[$j-1] = $array[$j];
                                        $array[$j] = $tmp;
                                }
                        }
                }
                return $array;
        }

     2.快速排序,是对冒泡排序的一种改进。通过一趟排序将要排序的数据分隔成独立的两部分,其中的一部分的所有数据都比另外一部分排序要小,然后在按此方法分别对两部分数据进行快速排序,整个排序递归进行,以此达到整个数据变成有序序列。(php的内置函数sort()使用的就是快速排序)

	function quickSort($arr){
		$count = count($arr);
                if($count<2){
                    return $arr;
                }
		$key = $arr[0];
		$left_arr = array();
		$right_arr = array();
		for($i=1; $i<$count;$i++){
			if($arr[$i]<=$key){
				$left_arr[] = $arr[$i];
			}else{
				$right_arr[] = $arr[$i];
			}
		}
		$left_arr = quickSort($left_arr);
		$right_arr = quickSort($right_arr);
		return array_merge($left_arr,array($key),$right_arr);
	}

     3.选择排序,选择排序 每一趟都从待排序的数据元素中选出最小或者最大的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。(因为被排序的数组相同的元素值可能被替换,所以选择排序是不稳定的算法) 

	function selectSort($arr){
		$count = count($arr);
                if($count<2){
                    return $arr;
                }
		for($i = 0;$i<$count;$i++){
			for($j=$i+1;$j<$count;$j++){
				if($arr[$i]>$arr[$j]){
					$tmp = $arr[$i];
					$arr[$i] = $arr[$j];
					$arr[$j] = $tmp;
				}
			}
		}
		return $arr;
	}

     4.插入排序,有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。 

   

	function insertSort($arr){
		$count = count($arr);
                if($count<2){
                    return $arr;
                }
                for($i = 0;$i<$count;$i++){
			$tmp = $arr[$i];
			$j = $i-1;
			while($arr[$j] > $tmp){
				$arr[$j+1] = $arr[$j];
				$arr[$j] = $tmp;
				$j--;
			}
		}
		return $arr;
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值