js 面试算法--排序算法

1.冒泡排序算法

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻的元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该是最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。


js 面试算法--排序算法_第1张图片
冒泡排序


2.快速排序(分治法)

选择数组中的一个数作为基准元素(pivot),将大于基准数的放大左侧,小于基准数的放到基准数的右边。

快排的核心是找出一个基准元素,把数组中比该元素小的放到左边数组,比该元素大的放到右边数组,如果左边数组和右边数组分别有序,那么leftArray+midItem+rightArray就是我们要的排序结果了。要使得左右数组有序,只需要对它们分别调用快排函数就可以了。递归调用需要一个出口,当数组长度<=1的时候,就是递归出口。

js 面试算法--排序算法_第2张图片
快速排序

一次排序下来以后,基准数左面的元素都小于该基准数,右面的数都大于该基准数。

然后再对左右两侧递归调用算法。


3.二路归并

1.将一个数组一分为二,

2.接着将分成的数组继续一分为二,知道长度为1,

3.当递归到了尽头,向上回溯,对于两个有序的数组,将它们合并成一个有序数组,从而完成整个归并排序。


js 面试算法--排序算法_第3张图片
二路归并

你可能感兴趣的:(js 面试算法--排序算法)