当前位置:网站首页>js最常用的排序---手撕js系列
js最常用的排序---手撕js系列
2022-06-11 03:30: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天-----第一天
边栏推荐
- PostgreSQL source code learning (17) -- mvcc ② - Introduction to snapshot and isolation level
- SSL库选择
- PostgreSQL source code learning (21) -- fault recovery ② - transaction log initialization
- Checkbox beautify button selected style
- Canvas+svg line particle animation web page background
- RHEL7 切换字符编码为GBK
- 【ELT.ZIP】OpenHarmony啃论文俱乐部——数据高通量无损压缩方案
- 计算机视觉(AI)面试大全
- js点击太阳月亮切换白天黑夜js特效
- SQL | 游戏行业部分指标
猜你喜欢

PostgreSQL source code learning (17) -- mvcc ② - Introduction to snapshot and isolation level

单片机通信数据延迟问题排查

The tide play power is really firepower! The first big screen cinema for young people? Cool open TV Max 86 "sudden attack

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

ThoughtWorks.QRCode功能齐全的生成器

OpenGL第七章 基础光照

UML系列文章(28)体系结构建模---协作

/The world of 10 recommended websites for learning programming has entered the era of the Internet. According to a recently released Internet trends 2016 report, China has become a leader in the Inter

SQL | some indicators of the game industry

OpenGL错误指南
随机推荐
SQL | 游戏行业部分指标
Canvas drawing -- how to place the drawing in the center of the canvas
【云原生】什么是微服务?怎么搭建?手把手教你搭建第一个微服务(框架)
R bioinformatics statistical analysis
RT thread test
C language pointer
rt-thread测试
Dépannage du problème de retard des données de communication du micro - ordinateur à puce unique
【ELT.ZIP】OpenHarmony啃论文俱乐部——快速随机访问字符串压缩
svg实现纸飞机自由的飞翔动画
【安全科普】今天你被社工了吗?
Database design specification
Instructor add function_ Enable auto fill_ Instructor modification function
canvas旋转绘图h5动画js特效
联易融一面(已过)
window10安装keras
【ELT.ZIP】OpenHarmony啃论文俱乐部——多层存储分级数据压缩
PostgreSQL source code learning (XX) -- fault recovery ① - transaction log format
Reasons why Chinese comments cannot be written in XML
SSL库选择