php如何实现把数组排成最小的数(附代码)

来源:转载 发布时间:2018-10-10 15:52:04 阅读量:947

本篇文章给大家带来的内容是关于php如何实现把数组排成最小的数(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
解法1
1.数组排序,使用自定义排序规则是 a.b>b.a a 和 b互换位置
2.usort函数的使用

1

2

3

4

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] 调换位置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<?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));

}


标签: PHP
分享:
评论:
你还没有登录,请先