一个新奇的数组排序方法

最近在复习基础知识的时候,看到Math对象的max方法时,突然想起来前一段经常看的数组排序方法,但是没有发现有用Math.max方法实现的排序,于是闲来无聊,就自己写了一个比较逗的排序方式,此排序法纯属娱乐,似乎我目前看起来也没什么实用价值,不过,还是写篇文章分享下思路,毕竟有点个人想法不容易。

思路:通过利用Math.max()方法的特性(传入几个参数,返回其中最大一项),我们可以把一个无序数组a当做Math.max()方法的参数(es6的...运算符刚好可以使用),然后我们拿到最大的一项将他push进一个新数组b,最后进行递归,直至无序数组a为空。

    直接上代码

var a=[2,5,1,7,9,6,3,8,5,4,7,1];
var b=[];
function MathSort(obj){
	if(!obj instanceof Array || obj.length<=0) return;
	//判断传入的对象是否为数组,如果不是直接退出,第二个为递归结束条件,如果数组长度为0则退出
	var maxItem=Math.max(...obj);
	//找出数组中最大一项,...obj为es6语法,用法可自行百度
	b.push(maxItem);//将最大的一项存入b数组,
	obj.splice(obj.indexOf(maxItem),1);//查找出传入无序数组的最大一项,并删除
	MathSort(obj);//递归操作
}
MathSort(a)
console.log(b);//[ 9, 8, 7, 7, 6, 5, 5, 4, 3, 2, 1, 1 ]

此方法虽然实用价值不大,但是我想面试时,用这种思路还挺新奇的,应该也会给面试官留下比较好的印象,刚好最近本人也在面试,此方式使用了递归,es6的...操作符,内置对象的方法。

本人也是面临毕业的小学生,技术上还是比较稚嫩,希望大家多多支持,写这篇博客纯属是觉得自己这个方法是我自己想出来的,感觉挺有意思,有不足之处还请指正~


猜你喜欢

转载自blog.csdn.net/badmoonc/article/details/80110042