js排序

一、冒泡排序


冒泡

1、算法描述和具体实现

大致流程描述:

(1)比较相邻的元素。如果第一个比第二个大,就交换它们两个;

(2)每次遍历结束,能够找到该次遍历过的元素中的最大值

(3)如果还有没排序过的元素,继续(1)

代码实现:

冒泡排序

tips:一种原地排序算法,稳定排序算法。

有优化空间,主要从两方面进行优化:

①减少外层遍历次数

②让每次遍历能找到两个极值

平均时间复杂度:O(n^2)

空间复杂度: O(1)

稳定性:稳定

二、选择排序

找到数组中的最小(大)值,并将其放到第一位,然后找到第二小的值放到第二位……以此类推。

大致流程描述:

(1)取出未排序部分的第一个元素,遍历该元素之后的部分并比较大小。对于第一次遍历,就是取出第一个元素

(2)如果有更小的,与该元素交换位置

(3)每次遍历都能找出剩余元素中的最小值并放在已排序部分的最后

代码实现:

选择排序

tips:一种原地排序算法,不稳定排序算法。

平均时间复杂度:O(n^2)

空间复杂度: O(1)

稳定性:不稳定

三、插入排序

直接插入排序

它的基本思想是: 将待排序的元素按照大小顺序, 依次插入到一个已经排好序的数组之中, 直到所有的元素都插入进去.

大致流程:

(1)取未排序部分的第一个元素。第一次遍历时,将第一个元素作为已排序元素,从第二个元素开始取

(2)遍历前面的已排序元素,并与这个未排序元素比较大小,找到合适的位置插入

(3)继续执行(1)

代码实现:

插入排序

tips:一种原地排序算法,稳定排序算法。

平均时间复杂度:O(n^2)

空间复杂度: O(1)

稳定性:稳定

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容