实现Array.sort-小红书面试

题目

写一个Array对象的sort方法的实现,可以基于传入的函数排序,比如:

const arr = [3,4,5,1,2]
const res = arr.sort((a,b) => b - a) // [5,4,3,2,1]

解答

给一个最简单的实现,可能有很多漏考虑的情况,仅供参考:

const arr = [3,4,5,1,2]
Array.prototype.sortFun = function(compareFunc){
	const originArr = this;
	const size = originArr.length;
	// const tempArr = [];
	for(let i = 0; i < size; i++){
		// tempArr[originArr[i]] = 1; // 优化方案,对于整数排序 
		for(let j = i; j < size; j++){
			if(compareFunc(originArr[i], originArr[j]) > 0){
				let temp = originArr[i];
				originArr[i] = originArr[j];
				originArr[j] = temp;
			}
		}
	}
	return originArr;
}

const res = arr.sortFun((a,b) => b - a) // [1,2,3,4,5]
print(res)

const res = arr.sortFun((a,b) => a - b) // [1,2,3,4,5]
print(res)

你有好的实现方法,欢迎贴到评论区!



请遵守《互联网环境法规》文明发言,欢迎讨论问题
扫码反馈

扫一扫,反馈当前页面

咨询反馈
扫码关注
返回顶部