当前位置:网站首页>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天-----第一天
边栏推荐
- R analysis visual practical data (flight \u education \u restaurant \u tenant \u change \u life \u safety)
- Artalk | how to build a domestic hyperfusion evolutionary base with minimum investment?
- CheckBox美化按钮选中样式
- 【ELT.ZIP】OpenHarmony啃论文俱乐部——电子设备软件更新压缩
- 2022 年 5 月产品大事记
- Log4j use
- WinDbg virtual machine dual machine debugging driver file debugging
- 单片机通信数据延迟问题排查
- Iqoo 8 measured hands-on experience: return of the king, never high profile
- 被“内卷”酸翻的OPPO Reno6
猜你喜欢

How should Xiaobai start the Amazon self support evaluation?

Checkbox beautify button selected style

/10个值得推荐的学习编程的网站 世界已经进入了互联网的时代。据最近发布的一篇《2016年互联网趋势》报告显示,中国已成为互联网市场的领导者,中国互联网用户的数量达到了6.68亿。可以预见,有

What has TCL done right to break through the technological strength of Chinese brand innovation?

Shangpinhui mall_ Background homepage of

Pyqt5:qlineedit control code

618将至!全渠道开售,高价低配的OPPO Reno6能赢吗?

2022 年 5 月产品大事记

PostgreSQL source code learning (22) - fault recovery ③ - transaction log registration

canvas交互式星星动画背景js特效
随机推荐
Discussion on the concurrency security of a common set on players
GD32F4串口dma接收问题解决
PostgreSQL source code learning (18) -- mvcc ③ - creating (obtaining) snapshots
postgresql copy语句
音乐正版率关键数据缺失,网易云音乐IPO胜算几何?
SQL查询连续三天登录的用户
R bioinformatics statistical analysis
cv. Houghcircles: Circular Hough transform opencv
MySQL learning notes: JSON nested array query
R生物信息学统计分析
Multi thread alternate output ab
three. JS cool technology background H5 animation
JS top icon menu click to switch background color JS special effect
three.js炫酷科技感背景h5动画
C language pointer
SSL交互过程
Oppo K9 tests "bundling sales" and consumers "earn" or "lose"?
Vocabulary Construction -- code completion fast food tutorial (3) - word segmentation
Troubleshooting of single chip microcomputer communication data delay
UML系列文章(28)体系结构建模---协作