多位个数字 ,不同组合排列之和 (不重复,所有可能的组合之和) PHP

本文深入探讨了两种不同的数组排序算法实现方式,详细介绍了通过递归和循环方式对数组进行复杂排序的具体代码实现,为读者提供了丰富的算法理解和实践案例。

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

数组

$array = [1,2,3,4]; // 多位数也可以

以下是所需第一种方式结果

在这里插入图片描述

以下是具体实现代码

   public function getSortList($array,$level = -1,&$list =[])
    {	
    	for ($i=0; $i < count($array); $i++) { 
    		if($level < 0){
    			//第一级直接输出对应数字
				$list[] = $array[$i];
    		}else{
	    		$values  = $array[$i];
	    		//根据等级组装前几位
				for ($k=0; $k < $level ; $k++) { 
		    		$values   .=  '+'.$array[$i+$k+1];
		    	}
		    	$j= 0;
		    		//循环拼合最后一位
				for ($n=($i+$level+1); $n < count($array); $n++) { 
					$j++;
					$first  =  $values; // 组合上几位
					$first .=  '+'.$array[$n];
					$list[] = $first;

				}
				
				//到最后一位结束递归
				if($j == 1){
					break;
				} 
			}
				
	    }
	    //长度大于等级+2停止递归
	    if(($level+2)  < count($array)){
    		$this->getSortList($array,$level+1,$list);
    	}	
    	return $list;
    }

还有另外一种结果
在这里插入图片描述

排序的方式不同

public function getSortList($array,$index = 0,$up =0,&$result =[])
 {
		for ($i=$index; $i < count($array); $i++) {
            if($index > 0 ){
            	$value = $up.$array[$i];
            }else{
            	$value = $array[$i];
            }
            $result[]  = $value;
            $this->getSortList($array,$i+1,$value,$result);
        }
        return $result ;
		
 }

如果有更好的方式,也请大家评论提供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joe.Xie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值