前端面试题21(js排序方法)

news/2024/10/5 0:12:02/

在这里插入图片描述
JavaScript 中有多种内置和自定义的排序方法。内置的 .sort() 方法是最直接的排序方式,而自定义排序算法如冒泡排序、选择排序、插入排序、希尔排序、快速排序等则提供了更深层次的学习和应用价值。下面我将详细介绍这些排序方法,并给出相应的示例代码。

1. 内置 .sort() 方法

JavaScript 数组的 .sort() 方法可以对数组元素进行排序。默认情况下,它按照字符串的Unicode码点顺序排序。对于数字排序,通常需要提供一个比较函数。

示例代码:

javascript">let numbers = [5, 3, 8, 1, 2];
numbers.sort((a, b) => a - b); // 升序
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

2. 冒泡排序

冒泡排序通过重复遍历数组,比较相邻元素并交换它们(如果顺序错误),直到没有更多的交换为止。

示例代码:

javascript">function bubbleSort(arr) {let len = arr.length;for (let i = 0; i < len; i++) {for (let j = 0; j < len - 1 - i; j++) {if (arr[j] > arr[j + 1]) {[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];}}}return arr;
}let numbers = [5, 3, 8, 1, 2];
bubbleSort(numbers);
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

3. 选择排序

选择排序每次从待排序的部分找出最小(或最大)的元素,存放到序列的起始位置。

示例代码:

javascript">function selectionSort(arr) {let len = arr.length;for (let i = 0; i < len - 1; i++) {let minIndex = i;for (let j = i + 1; j < len; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}if (minIndex !== i) {[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];}}return arr;
}let numbers = [5, 3, 8, 1, 2];
selectionSort(numbers);
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

4. 插入排序

插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

示例代码:

javascript">function insertionSort(arr) {let len = arr.length;for (let i = 1; i < len; i++) {let current = arr[i];let j = i - 1;while (j >= 0 && arr[j] > current) {arr[j + 1] = arr[j];j--;}arr[j + 1] = current;}return arr;
}let numbers = [5, 3, 8, 1, 2];
insertionSort(numbers);
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

5. 希尔排序

希尔排序是插入排序的一种更高效的改进版本,通过将整个数据分割成若干个子序列分别进行插入排序来提升性能。

示例代码:

javascript">function shellSort(arr) {let n = arr.length;let gap = Math.floor(n / 2);while (gap > 0) {for (let i = gap; i < n; i++) {let temp = arr[i];let j = i;while (j >= gap && arr[j - gap] > temp) {arr[j] = arr[j - gap];j -= gap;}arr[j] = temp;}gap = Math.floor(gap / 2);}return arr;
}let numbers = [5, 3, 8, 1, 2];
shellSort(numbers);
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

以上是 JavaScript 中一些基本排序方法的讲解和示例代码。每种排序算法都有其特点和适用场景,理解它们的工作原理有助于在实际项目中做出更合适的选择。


http://www.ppmy.cn/news/1473794.html

相关文章

Linux 常用指令详解

Linux 是一个强大而灵活的操作系统&#xff0c;掌握常用的 Linux 指令是使用和管理 Linux 系统的基础。本文将介绍一些常用的 Linux 指令&#xff0c;并附上 Vim 和 g 的常用指令说明&#xff0c;帮助你更好地进行开发和操作。 1. 基本文件操作指令 1.1 显示目录内容 ls常用…

存储结构与管理磁盘

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、一切从“/”开始 二、物理设备的命名规则 三、文件系统与数据资料 四、挂载硬件设备 五、添加硬盘设备 六、添加交换分区 七、磁盘容…

如何从相机的存储卡中恢复原始照片

“不好了。” 当您意识到自己不小心从存储卡中删除了照片&#xff0c;或者错误地格式化了相机的记忆棒时&#xff0c;您首先会喊出这两个词。这是一种常见的情况&#xff0c;每个人一生中都会遇到这种情况。幸运的是&#xff0c;有办法从相机的 RAW 记忆棒中恢复已删除的照片。…

【云服务器介绍】选择指南 腾讯云 阿里云全配置对比 搭建web 个人开发 app 游戏服务器

​省流目录&#xff1a;适用于博客建站&#xff08;2-4G&#xff09;、个人开发/小型游戏[传奇/我的世界/饥荒]&#xff08;4-8G&#xff09;、数据分析/大型游戏[幻兽帕鲁/雾锁王国]服务器&#xff08;16-64G&#xff09; 1.京东云-专属活动 官方采购季专属活动地址&#xff1…

coco数据集格式计算mAP的python脚本

目录 背景说明COCOeval 计算mAPtxt文件转换为coco json 格式自定义数据集标注 背景说明 在完成YOLOv5模型移植&#xff0c;运行在板端后&#xff0c;通常需要衡量板端运行的mAP。 一般需要两个步骤 步骤一&#xff1a;在板端批量运行得到目标检测结果&#xff0c;可保存为yol…

【HICE】转发服务器实验

1.在本地主机上操作 2.在客户端操作设置主机的IP地址为dns 3.测试,客户机是否能ping通

mac|idea导入通义灵码插件

官方教程&#xff1a;通义灵码下载安装指南_智能编码助手_AI编程_云效(Apsara Devops)-阿里云帮助中心 下载插件&#xff1a; ⇩ TONGYI Lingma - JetBrains 结果如下&#xff1a; 选择apply、ok&#xff0c;会出现弹窗&#xff0c;点击登录 可以实现&#xff1a;生成单元测…

Towards Deep Learning Models Resistant to Adversarial Attacks

这篇论文的主要内容是关于开发对抗攻击具有抗性的深度学习模型。对抗攻击是通过对输入数据进行微小且精心设计的扰动&#xff0c;诱使深度学习模型做出错误的预测。这种攻击在图像识别、语音识别和自然语言处理等任务中尤为突出。 这篇论文的主要内容是关于开发对抗攻击具有抗…