把数组排成最小的数
把数组排成最小的数
http://www.nowcoder.com/questionTerminal/8fecd3f8ba334add803bf2a06af1b993
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
将数组成员两两比较 ,两个数的其中一个在前边时拼接后更小的话,将那个数放在前边。
也就是进行一次排序, 123 + 32 = 12332 32+123 = 32123 12332<32123 将123放在前边
let arr = [3,5,1,4,2] // let arr = [3,32,321] function MinNumber(n1, n2) { let num1 = `${n1}${n2}` let num2 = `${n2}${n1}` if(num1> num2){ return true }else { return false } } function PrintMinNumber(numbers) { for (let i = 0; i < numbers.length; i++) { for (let j = i + 1; j < numbers.length; j++) { if (MinNumber(numbers[i], numbers[j])) { [numbers[j], numbers[i]] = [numbers[i], numbers[j]] } } } let num = ""; for (let i in numbers){ num+=numbers[i] } return num } console.log(PrintMinNumber(arr));