我是靠谱客的博主 端庄世界,最近开发中收集的这篇文章主要介绍JavaScript 数据结构与算法十大经典排序算法-归并排序(五),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原理

归并排序,是先把数组从中间分成两部分,然后对前后两部分分别排序,再将排序好的连部分合并在一起。

核心思想是将两个有序的数列合并成一个大的有序序列。通过递归,层层合并,即为归并
在这里插入图片描述

代码实现

const mergeSort = arr =>{
	// 采用自上而下的递归方法
	const len = arr.length
	if ( len <2 ) {
		return arr
	}
	let middle = Math.floor ( len/2 ),
		 left = arr.slice ( 0, middle ),
		 right = arr.slice ( middle ) ;
 	return merge ( mergeSort ( left ), mergeSort ( right ) )
}

const merge = (left, right){
	const result = [ ]
	while ( left.length && right.length ){
		// 注意:判断的条件是小于等于,如果只是小于,那么排序不稳定
		if ( left[0] <= right[0] ){
			result.push( left.shift() )
		} else {
			result.push( right[0] )
		}
	}
	while ( left.length ) result.push( left.shift() )
	while ( right.length ) result.push( right.shift() )
	return result;
}

动画
在这里插入图片描述

看了很久才看明白代码,如果代码难理解,可以对照着动画看看排序过程是怎么样的。

最后

以上就是端庄世界为你收集整理的JavaScript 数据结构与算法十大经典排序算法-归并排序(五)的全部内容,希望文章能够帮你解决JavaScript 数据结构与算法十大经典排序算法-归并排序(五)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部