用js实现算法:冒泡排序、插入排序和快速排序

时间:2023-03-08 18:31:35

一、冒泡排序

 function bubbleSort(arr){
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
} }
} var arr=[12,4,9,89,10];
bubbleSort(arr);
console.log(arr);

二、插入排序

 function insertSort(arr){
//从1开始遍历arr
for(var i=1;i<arr.length;i++) {
var t=arr[i];//将当前值保存在t中
var p=i-1;//定义p为i-1
//反复: p>=0&&p位置的值>t
while(p>=0&&arr[p]>t){
  //p位置的值,赋值给p+1位置
arr[p+1]=arr[p];
p--;//p减一
}//(循环退出)
arr[p+1]=t;//将t保存到p+1位置
}
return arr;
} var a=[5,1,2,4,8,6,3,77];
var res=insertSort(a);
console.log(res);

三、快速排序

 function quickSort(arr){
if(arr.length>1){
var c=parseInt(arr.length/2);
var center=arr.splice(c,1);
for(var i= 0,left=[],right=[];i<arr.length;i++){
if(arr[i]<center) left.push(arr[i]);
else right.push(arr[i]);
}
return quickSort(left).concat(center,quickSort(right));
}else{
return arr;
}
} var a=[5,1,2,4,8,6,3,7];
var res=quickSort(a);
console.log(res);
 function quickSort(arr) {
if(arr.length<=1) {
return arr;
}
let leftArr = [];
let rightArr = [];
let q = arr[0];
for(let i = 1,l=arr.length; i<l; i++) {
if(arr[i]>q) {
rightArr.push(arr[i]);
}else{
leftArr.push(arr[i]);
}
}
return [].concat(quickSort(leftArr),[q],quickSort(rightArr));
} module.exports = quickSort;