javascript 排序算法
Posted rosendolu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 排序算法相关的知识,希望对你有一定的参考价值。
冒泡排序算法
function sort_bubble(arr,fn) {
let length = arr.length;
for(let x = 0; x < length; x ++) {
for (let y = x + 1; y < length; y ++) {
[arr[x],arr[y]] = fn(arr[x],arr[y])?[arr[y],arr[x]]:[arr[x],arr[y]];
}
}
return arr;
}
// 交换数组位置
function swap(a,b) {
return [a,b] = [b,a];
}
function ascending(x,y) {
return x > y;
}
function desending(x,y) {
return x < y;
}
选择排序
/**
* @param {array} array 传入要排序的数组
*/
function selectionSort(array) {
const len = array.length;
for (let i = 0; i < len; i++) {
let minIndex = i;
for (let j = i + 1; j < len; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
// 最小元素已经是第一个就不用交换
if( i !== minIndex) {
// let tmp = array[i];
// array[i] = array[minIndex];
// array[minIndex] = tmp ;
[array[i],array[minIndex]] = [array[minIndex],array[i]];
}
}
return array;
}
插入排序
/**
*
* @param {number} array 传入排序的数组
*/
function insertionSort(array) {
for (let i = 1, len = array.length; i < len; i++) {
const temp = array[i];
let j = i - 1;
while (array[j] > temp) {
array[j + 1] = array[j];
array[j] = temp;
}
}
return array;
}
快速排序
function quickSort(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var 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 排序算法的主要内容,如果未能解决你的问题,请参考以下文章
总结:大厂面试常考手撕代码 —— JavaScript排序算法(冒泡排序选择排序插入排序快速排序)