JavaScript常用排序算法全面解析
需积分: 12 98 浏览量
更新于2024-10-28
收藏 2KB ZIP 举报
资源摘要信息:"JavaScript常用排序方法总结"
JavaScript(简称“JS”)是一种在浏览器端执行的脚本语言,用于开发动态网页内容和实现复杂的交互功能。在编程过程中,数据排序是一种常见的需求,JavaScript提供了多种排序方法以满足不同场景下的排序需求。以下是JavaScript中常用排序方法的总结,包括数组自带的排序方法和一些常用的算法实现。
1. Array.prototype.sort()方法:
这是JavaScript数组对象自带的一个方法,用于对数组的元素进行排序,并返回排序后的数组。默认情况下,该方法按照字符串Unicode码点进行排序。如果数组中的元素是数字类型,则需要提供一个比较函数来确保正确的排序顺序。
```javascript
let array = [3, 1, 4, 1, 5, 9, 2, 6];
array.sort((a, b) => a - b); // 升序排列
array.sort((a, b) => b - a); // 降序排列
```
2. 冒泡排序(Bubble Sort):
冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
```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]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
```
3. 选择排序(Selection Sort):
选择排序算法是一种原址比较排序算法。选择排序大致的思路是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
```javascript
function selectionSort(arr) {
let len = arr.length;
let minIndex, temp;
for (let i = 0; i < len - 1; i++) {
minIndex = i;
for (let j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex !== i) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
return arr;
}
```
4. 插入排序(Insertion Sort):
插入排序的工作方式像玩扑克牌时的整理手牌。对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
```javascript
function insertionSort(arr) {
let len = arr.length;
let preIndex, current;
for (let i = 1; i < len; i++) {
preIndex = i - 1;
current = arr[i];
while (preIndex >= 0 && arr[preIndex] > current) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
}
return arr;
}
```
5. 归并排序(Merge Sort):
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。
```javascript
function mergeSort(arr) {
if (arr.length <= 1) {
return arr;
}
let middle = Math.floor(arr.length / 2);
let left = arr.slice(0, middle);
let right = arr.slice(middle);
return merge(mergeSort(left), mergeSort(right));
}
function merge(left, right) {
let result = [];
while (left.length && right.length) {
if (left[0] <= right[0]) {
result.push(left.shift());
} else {
result.push(right.shift());
}
}
return result.concat(left).concat(right);
}
```
6. 快速排序(Quick Sort):
快速排序的基本思想是:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
```javascript
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
let pivotIndex = Math.floor(arr.length / 2);
let pivot = arr.splice(pivotIndex, 1)[0];
let left = [];
let right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
```
以上是JavaScript中常用的几种排序方法。在实际编程中,根据数组的大小和数据类型,可以选择最适合的排序方法以优化性能。例如,对于较小的数组,冒泡排序和插入排序的简单实现可能已经足够好用;而对于较大的数据集,归并排序和快速排序可能会提供更好的性能。在使用内置的Array.sort()方法时,提供自定义的比较函数是控制数组排序方式的关键所在。
2021-07-16 上传
2021-07-15 上传
2021-07-16 上传
2021-07-16 上传
2021-07-15 上传
2021-07-14 上传
2021-07-16 上传
2021-07-14 上传
2021-07-15 上传
weixin_38656395
- 粉丝: 4
- 资源: 912
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查