排序是开发过程中经常遇到的场景,经常需要对后台返回的字段等进行排序。一般业务中我们会用数组的sort方法来实现排序,非常方便,在此不做赘述,本文主要讲逻辑上排序内部的实现方案。
冒泡排序
/**
* Bubble Sort
*/
function bubbleSort(arr){
for(let i=0; i<arr.length-1; i++){
for(let j=0; j < arr.length -1 -i; j++){
if(arr[j] > arr[j + 1]){
const temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
//验证
const arr = [1,26,7,89,0,889,54]
console.log('排序前', arr.join(','));
const newArr = bubbleSort(arr);
console.log('排序后的数组为:', newArr.join(','));
验证效果:
插入排序
/**
* 插入排序
*/
function insertSort(arr){
if(arr.length <= 1){
return arr;
}
const newArray = [];
newArray.push(arr[0]);
for(let i = 1; i < arr.length; i++){
for(let j = 0; j < newArray.length; j++){
if(newArray[j] > arr[i]){
if(j === 0){
newArray.unshift(arr[i]);
}else{
newArray.splice(j,0,arr[i]);
}
break;
}
if(j === newArray.length -1){
newArray.push(arr[i]);
break;
}
}
}
return newArray;
}
//验证
const array = [1,26,7,89,0,889,54]
console.log('排序前', array);
console.log('排序后', insertSort(array));
效果验证:
快速排序
function quickSort(arr){
if(arr.length <= 1){
return arr;
}
const flagIndex = Math.floor(arr.length/2);
const flagValue = arr[flagIndex];
arr.splice(flagIndex, 1);
const leftArr = [];
const rightArr = [];
for(let i = 0; i<arr.length; i++ ){
if(flagValue>arr[i]){
leftArr.push(arr[i]);
}else{
rightArr.push(arr[i]);
}
}
return [...quickSort(leftArr), flagValue, ...quickSort(rightArr)]
}
//验证
const array = [1,26,7,89,0,889,54]
console.log('排序前', array.join(','));
console.log('排序后', quickSort(array).join(','));
效果验证
总结
本文基于js对常见的几种排序(冒泡排序,插入排序,快速排序 )方式进行了实现,希望能对你有所帮助。
如果本文对你有帮助,欢迎给作者点赞加关注哈哈~