輸入一個正整數數組,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則列印出這三個數字能排成的最小數字為321323。 解法1 1.數組排序,使用自定義排序規則是 a.b>b.a a 和 b互換位置 2.usort函數的使用 function... ...
輸入一個正整數數組,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入數組{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)); }