1.实现一个排序算法,完成下面序列的排序!
var version = [“1.34.5”, “1.23123.10”, “1.1.1”];也就是说,按照每个点对应的数字的大小进行排序,每个点的数字越大对应的数字的结果就是在后面。上面的排序之后的序列应该是:
[ ‘1.1.1’, ‘1.34.5’, ‘1.23123.10’ ]
实现的代码如下:使用前端的语言JavaScript实现的,重写一个sort的第三个参数函数即可!
var version = ["1.34.5", "1.23123.10", "1.1.1"];
function cmp(a, b) {
var len_a = a.length;
var len_b = b.length;
var i = 0;
var j = 0;
for (; i < len_a, j < len_b; i++, j++) {
var str_a = '';
while (a[i] != '.' && i < len_a) {
str_a += a[i];
i++;
}
var num_a = Number(str_a);
var str_b = '';
while (b[j] != '.' && j < len_b) {
str_b += b[j];
j++;
}
var num_b = Number(str_b);
if (num_b === num_a) {
continue;
} else {
return num_b < num_a;
}
}
}
version.sort(cmp);
console.log(version);
[ '1.1.1', '1.34.5', '1.23123.10' ]
第二题目:给你一个任意的数组叫你完成其中的元素的随机排序,当时我想的是生成一个随机,每次判断当前的随机数字是否大于0.5的方式来完成随机排序。
代码如下:
var s = ['a', 'f', 'g', 'k'];
var cmp1 = function () {
var number = Math.random();
return number > 0.5;
}
s.sort(cmp1);
console.log(s);
/*
PS E:\leetcode> node .\code.js
[ '1.1.1', '1.34.5', '1.23123.10' ]
PS E:\leetcode> node .\code.js
[ '1.1.1', '1.34.5', '1.23123.10' ]
[ 'k', 'f', 'a', 'g' ]
PS E:\leetcode> node .\code.js
[ '1.1.1', '1.34.5', '1.23123.10' ]
[ 'a', 'f', 'k', 'g' ]
PS E:\leetcode> node .\code.js
[ '1.1.1', '1.34.5', '1.23123.10' ]
[ 'f', 'k', 'g', 'a' ]
PS E:\leetcode>
*/
从上面的代码可以看出每次的输出的结果确实不一样的,证明两个算法的思路和实现全部正确!