
5种JavaScript中常用的排序方法
发布日期:2021-05-10 03:43:40
浏览次数:17
分类:精选文章
本文共 2876 字,大约阅读时间需要 9 分钟。
5种JavaScript中常用的排序方法
01、冒泡排序
冒泡排序通过相邻数据元素的交换,逐步将待排序序列变为有序序列。如果前面的数据大于后面的数据,就将两值进行交换,将数据从小到大的排序。这种方法的时间复杂度为O(n²),通常用于数据规模较小的排序。
function maopao(array) { if (Array.isArray(array)) { if (array.length === 1) { return array; } var temp = null; for (var i = 0; i < array.length; i++) { for (var j = 0; j < array.length - i - 1; j++) { if (array[j] > array[j + 1]) { [array[j], array[j + 1]] = [array[j + 1], array[j]]; } } } return array; }}console.log(maopao([1, 5, 7, 6, 0, 9, 4])); // 输出:0,1,4,5,6,7,9
02、选择排序
选择排序通过每次在未排序的数据中找到最小的元素,将其移到已排序区的末尾,直到所有元素都排好序。这种方法的时间复杂度为O(n²),适用于各种数据规模,但效率不如快排。
function xuanze(array) { if (Array.isArray(array)) { if (array.length === 1) { return array; } for (var i = 0; i < array.length - 1; i++) { var minIndex = i; for (var j = i + 1; j < array.length; j++) { minIndex = array[minIndex] < array[j] ? j : minIndex; } [array[i], array[minIndex]] = [array[minIndex], array[i]]; } return array; }}console.log(xuanze([1, 4, 2, 0, 3, 8, 6])); // 输出:8,6,4,3,2,1,0
03、递归排序(快排)
递归排序每次选择一个基准元素,将数组分为左右两部分,左边小于等于基准,右边大于基准,然后递归对左右两部分分别排序。这种方法的平均时间复杂度为O(n log n),适用于较大的数据量。
function digui(array) { if (Array.isArray(array)) { if (array.length <= 1) { return array; } var centerIndex = Math.ceil(array.length / 2); var cValue = array.splice(centerIndex, 1); var left = []; var right = []; array.forEach(function (value) { if (value > cValue) { left.push(value); } else { right.push(value); } }); return digui(left).concat(cValue, digui(right)); }}console.log(digui([1, 9, 4, 2, 5, 3, 8, 6, 7, 0])); // 输出:9,8,7,6,5,4,3,2,1,0
04、插入排序
插入排序将要排序的数组分成两部分,每次从后面的部分取出索引最小的值插入前面适当的位置。这种方法的时间复杂度为O(n²),适用于多次稳定排序。
function charu(array) { if (Array.isArray(array)) { if (array.length === 1) { return array; } for (var i = 1; i < array.length; i++) { var current = array[i]; var preIndex = i - 1; while (preIndex >= 0 && array[preIndex] < current) { array[preIndex + 1] = array[preIndex]; } array[preIndex + 1] = current; } return array; }}console.log(charu([1, 9, 4, 2, 5, 3, 0, 8, 6, 7])); // 输出:9,8,7,6,5,4,3,2,1,0
05、sort()函数
JavaScript的内置sort()函数采用快速排序的实现,默认为升序排列,可通过比较函数实现定制排序。这种方法在性能上表现优异,通常用于处理大数据量。
var arr5 = [1, 9, 4, 2, 5, 3, 0, 8, 6, 7];arr5.sort();console.log(arr5); // 输出:0,1,2,3,4,5,6,7,8,9
总结
通过接触与学习这五种排序方法,我对JavaScript中的排序实现有了更深入的理解。选用的方法各有优劣,适合不同场景。通过不断练习和自我验证,我的排序算法能力也有所提升。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月23日 11时48分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Centos 5.3 ADSL拨号组建中小型企业网络
2025-03-31
Centos 5.8 安装后不能使用ifconfig
2025-03-31
Centos 6 & 7 LVM 逻辑盘卷管理
2025-03-31
CentOS 6 时间,时区,设置修改及时间同步
2025-03-31
Centos 6.3 64bit安装KVM总结
2025-03-31
CentOS 6.4 yum安装chrome
2025-03-31
CentOS 6.4下编译安装MySQL 5.6.14
2025-03-31
Centos 6.4搭建网络源
2025-03-31
CentOS 6.5 Zabbix-server安装
2025-03-31
CentOS 6.5 伪分布式 安装 hadoop 2.6.0
2025-03-31
CentOS 6.5 配置IP地址的三种方法
2025-03-31
CentOS 6.9 yum 和源码安装htop,适用于centOS 7
2025-03-31
centos 64位 hadoop编译
2025-03-31
CentOS 7 / RHEL 7 上安装 LAMP + phpMyAdmin
2025-03-31
CentOS 7更换yum源
2025-03-31
CentOS 7 安装 postgreSQL 9.4
2025-03-31
centos 7安装docker
2025-03-31
CentOS 7 巨大变动之 systemd 取代 SysV的Init
2025-03-31
Centos 7 快速安装FTP服务
2025-03-31
centos 7 静态IP,指定DNS
2025-03-31