当前位置:网站首页>js最常用的排序---手撕js系列
js最常用的排序---手撕js系列
2022-06-11 03:25:00 【爱吃圣女果】
冒泡排序
思想:遍历len-1次,每次找到最大数放到末尾。比较是按照相邻数组比较
时间复杂度:O(n^2)
空间复杂度:O(1)
function bubblesort(arr)
{
for(let i=0;i<arr.length-1;i++)
{
for(let j=0;j<arr.length-i-1;j++)
{
if(arr[j]>arr[j+1])
{
let temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
console.log(bubblesort([10,2,4,5,60,2]))//[ 2, 2, 4, 5, 10, 60 ]
选择排序
思想:遍历len-1次,每次找到最小数放到开头。比较是按照相邻数组比较
时间复杂度:O(n^2)
空间复杂度:O(1)
function selectsort(arr)
{
let min,temp;
for(let i=0;i<arr.length-1;i++)
{
min=i;
for(let j=i+1;j<arr.length;j++)
{
if(arr[j]<arr[min])
{
min=j;
}
}
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
return arr;
}
console.log(selectsort([3,2,4,5,8,0,1]))
插入排序
思想:假设前n个数已经排序,取出下一个元素,在以排序的元素中找到合适位置插入。
时间复杂度:O(n^2)
空间复杂度:O(n)
function insertsort(arr)
{
let len=arr.length;
for(let i=0;i<len;i++)
{
let key=arr[i];
let j=i-1;
while(j>=0&&arr[j]>key)
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=key;
}
return arr;
}
console.log(insertsort([3,2,4,5,8,0]))
快速排序
思想:找到一个基准数,将小于基准数放到left数组,大于基准数放到right数组。然后concat拼接。left,right数组进入quicksort递归遍历,直到找到出口。
时间复杂度:O(nlogn)
空间复杂度:O(n)
function quicksort(arr)
{
if(arr.length<2) return arr;//出口
let left=[]
let right=[]
let mid=arr.splice(Math.floor(arr.length/2),1);
for(let i=0;i<arr.length;i++)
{
if(arr[i]<mid)
{
left.push(arr[i])
}
else{
right.push(arr[i])
}
}
return quicksort(left).concat(mid,quicksort(right))
}
console.log(quicksort([3,2,4,5,15,0]))
挑战连续更文100天-----第一天
边栏推荐
- 亚马逊测评自养号,小白应该如何开始?
- Hqchart actual combat tutorial 55 area map of K line of ouyi.com
- 【云原生】什么是微服务?怎么搭建?手把手教你搭建第一个微服务(框架)
- 超算Disk quota exceed
- Dépannage du problème de retard des données de communication du micro - ordinateur à puce unique
- postgresql copy语句
- Canvas interactive star animation background JS special effect
- Pyqt5:slider slider control
- svg实现纸飞机自由的飞翔动画
- The tide play power is really firepower! The first big screen cinema for young people? Cool open TV Max 86 "sudden attack
猜你喜欢

thinkphp3.2.3反序列化利用链分析

删除CSDN上传图片的水印

Xu Li 618, how can Suning fight this hard battle?

postgresql源码学习(22)—— 故障恢复③-事务日志的注册

Canvas interactive star animation background JS special effect

【安全科普】挖矿技术,从一个理工男的爱情故事讲起

【ELT.ZIP】OpenHarmony啃论文俱乐部——快速随机访问字符串压缩

名不副实的雅迪高端品牌VFLY,为何“不高端”?

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received

WinDbg virtual machine dual machine debugging driver file debugging
随机推荐
用Fragment实现图片简易浏览
postgresql 捕获函数中的异常
Demand and Prospect of 3D GIS Industry
[cloud native] what is micro service? How to build it? Teach you how to build the first micro service (framework)
cv. Houghcircles: Circular Hough transform opencv
If there is no separation ----- > > log interpretation (3)
Hqchart nailing applet tutorial 1- create a K-line diagram
JS click the sun and moon to switch between day and night JS special effect
GD32F4串口dma接收问题解决
/10个值得推荐的学习编程的网站 世界已经进入了互联网的时代。据最近发布的一篇《2016年互联网趋势》报告显示,中国已成为互联网市场的领导者,中国互联网用户的数量达到了6.68亿。可以预见,有
svg实现纸飞机自由的飞翔动画
Disk quota exceeded
Unity之数据持久化——Json
Lombok use
Start QQ through the program to realize automatic login
名不副实的雅迪高端品牌VFLY,为何“不高端”?
LVGL中文字体制作
路径计数2(dp + 组合数)
PostgreSQL source code learning (21) -- fault recovery ② - transaction log initialization
超算Disk quota exceed