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