zoukankan      html  css  js  c++  java
  • [PHP] 算法-把数组排成最小的数的PHP实现

    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
    
    解法1
    1.数组排序,使用自定义排序规则是 a.b>b.a a 和 b互换位置
    2.usort函数的使用
    
    function costomcomp(a,b)
        return a.b > b.a
    usort(arr,'costomcomp')
    return implode('',arr)
    
    解法2:冒泡法
    1.循环外层 i
    2.内层循环 j,判断条件是j=i+1;j<arr.length;j++
    3.内层调换 arr[i].arr[j] > arr[j].arr[i] 调换位置
    <?php
    function customComp($a,$b){
            return intval($a.''.$b) > intval($b.''.$a);
    }
    //解法1:自定义排序
    function PrintMinNumber($numbers)
    {
            usort($numbers,'customComp');
            return intval(implode('',$numbers));
    }
    $arr=array(3,32,321);
    $result=PrintMinNumber($arr);
    var_dump($result);
    
    $result=PrintMinNumber2($arr);
    var_dump($result);
    
    //解法2:冒泡排序
    function PrintMinNumber2($arr)
    {
            $length=count($arr);
            for($i=0;$i<$length;$i++){
                    for($j=$i+1;$j<$length;$j++){
                            if(intval($arr[$i].''.$arr[$j])>intval($arr[$j].''.$arr[$i])){
                                    $temp=$arr[$i];
                                    $arr[$i]=$arr[$j];
                                    $arr[$j]=$temp;
                            }   
                    }   
            }   
            return intval(implode('',$arr));
    }
  • 相关阅读:
    前端常用模板引擎- artTemplate
    Vue-多级组件嵌套传值
    echarts图表常用到的设置
    react-基础入门分享
    vue中 export const 和 export default的区别
    vue安装依赖报错
    nvm-node版本控制工具
    gulp-入门
    vue 中使用 iconfont
    c3中基本动画
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9671792.html
Copyright © 2011-2022 走看看