Array.prototype.sort()
Javascript 的 sort() 方法是最常用最快的方法;
const arr = [5, 8, 1, 4, 9, 3, 7];
console.log(arr.sort((a, b) => a - b));
console.log(arr.sort((a, b) => b - a));
- 冒泡排序
const arr = [5, 8, 1, 4, 9, 3, 7];
const arrSort = (array) => {
const len = array.length;
for (var i = 0; i < len - 1; i++) {
for (var j = 0; j < len - 1 - i; j++) {
if (array[j] > array[j+1]) {
var temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
return array;
}
console.log(arrSort(arr));
排序思路:
- 相邻的两个元素,如果前一个比后一个大,则交换位置。
- 完第一轮的时候,最后一个元素是最大的元素。
- 不重复的彻底比较全部元素
- 快速排序
递归思想,两边快速的排序,冒泡排序的改进const arr = [5, 8, 1, 4, 9, 3, 7];
const quickSort = (array) => {
if (array.length <= 1) {
return array;
}
var index = Math.floor(array.length / 2);
var temp = array.splice(index, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < array.length; i++) {
if (array[i] < temp) {
left.push(array[i]);
} else {
right.push(array[i]);
}
}
return quickSort(left).concat([temp], quickSort(right));
}
console.log(quickSort(arr));
说明:
- index 整数,被操作项目所在的位置(必须)
- num 整数,要删除的项目的数量,如果为 0,示不删除(必须)
- item 向数组中添加的新项目,可以是多个(可选)
push() 法是向数组末尾添加一个或多个新项目并返回新数组的长度
concat() 法连接两个或多个数组,不会改变原有数组,返回一个新数组
- 插入排序
const arr = [5, 8, 1, 4, 9, 3, 7];
const sort = (array) => {
for (let i = 0; i < array.length; i++) {
if (array[i] < array[i - 1]) {
var temp = array[i];
var j = i - 1;
array[i] = array[j];
while (j >= 0 && temp < arr[j]) {
array[j + 1] = array[j];
j--;
}
插入
array[j + 1] = temp;
}
}
return array;
}
console.log(sort(arr));
排序思路:
- 从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素序列中扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到下一位置中
- 重复步骤2
- 选择排序
const arr = [5, 8, 1, 4, 9, 3, 7];
const selectSort = (array) => {
for (let i = 0; i < array.length; i++) {
var min = array[i];
var minIndex = i;
for (let j = i + 1; j < array.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
array.splice(i, 0, min);
array.splice(minIndex + 1, 1);
}
return array;
}
console.log(selectSort(arr));
排序思路:
- 在未排序序列中找到最小(大)元素
- 并存放到排序序列的起始位置
- 然后,再从剩余未排序元素中继续寻找最小(大)元素
- 然后放到已排序序列的末尾
- 以此类推
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律