javascript基本常用排序算法解析

发布时间 - 2026-01-11 03:26:52    点击率:

备注:内容大部分从网上复制,代码为自己手写。仅做知识的温故知新,并非原创。

1.冒泡排序(Bubble Sort)

(1)算法描述

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

(2)算法描述和实现

具体算法描述如下:

<1>.比较相邻的元素。如果第一个比第二个大,就交换它们两个;<2>.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;<3>.针对所有的元素重复以上的步骤,除了最后一个;<4>.重复步骤1~3,直到排序完成。

JavaScript代码实现:

改进冒泡排序:设置一标志性变量pos,用于记录每趟排序中最后一次进行交换的位置。由于pos位置之后的记录均已交换到位,故在进行下一趟排序时只要扫描到pos位置即可。

改进后算法如下:

传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值,我们考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) , 从而使排序趟数几乎减少了一半。

改进后的算法为:

三种算法的运行时间为:

由运行结果可以看出时间复杂度更低,耗时更短了。大家可以亲自尝试下,运行的时候最好将三种算法写在一个文件中运行,否则会由于浏览器等原因产生误差。

冒泡排序的动态图演示:

(3)算法分析

最佳情况:T(n) = O(n)

  当输入的数据已经是正序时

最坏情况:T(n) = O(n2)

  当输入的数据是反序时

平均情况:T(n) = O(n2)

2.选择排序(Selection Sort)

表现最稳定的排序算法之一,因为无论什么数据进去都是O(n²)的时间复杂度…..所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。

(1)算法简介

选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

(2)算法描述和实现

n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:

<1>.初始状态:无序区为R[1..n],有序区为空;<2>.第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;<3>.n-1趟结束,数组有序化了。

Javascript代码实现:

(3)算法分析

最佳情况:T(n) = O(n2)最差情况:T(n) = O(n2)平均情况:T(n) = O(n2)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # 排序算法  # JavaScript算法学习之冒泡排序和选择排序  # JavaScript实现的九种排序算法  # JavaScript插入排序算法原理与实现方法示例  # JavaScript选择排序算法原理与实现方法示例  # 常用的 JS 排序算法 整理版  # JS排序算法之冒泡排序  # 选择排序与插入排序实例分析  # JS排序算法之希尔排序与快速排序实现方法  # js算法中的排序、数组去重详细概述  # 几种经典排序算法的JS实现方法  # Javascript中的常见排序算法  # javascript快速排序算法详解  # JavaScript中几种常见排序算法小结  # javascript中可能用得到的全部的排序算法  # 是一种  # 三种  # 越小  # 都是  # 区为  # 温故知新  # 是因为  # 第一个  # 最多  # 以此类推  # 就把  # 第二个  # 时间为  # 可以看出  # 越好  # 可以得到  # 写在  # 则会  # 上讲  # 更低 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 免费视频制作网站,更新又快又好的免费电影网站?  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  php485函数参数是什么意思_php485各参数详细说明【介绍】  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何实现模型的全局作用域?(Global Scope示例)  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  西安专业网站制作公司有哪些,陕西省建行官方网站?  linux top下的 minerd 木马清除方法  WEB开发之注册页面验证码倒计时代码的实现  如何确认建站备案号应放置的具体位置?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何在阿里云购买域名并搭建网站?  如何彻底删除建站之星生成的Banner?  如何快速生成橙子建站落地页链接?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  如何在云虚拟主机上快速搭建个人网站?  如何在 React 中条件性地遍历数组并渲染元素  如何快速搭建支持数据库操作的智能建站平台?  浅析上传头像示例及其注意事项  网站制作免费,什么网站能看正片电影?  高防服务器如何保障网站安全无虞?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  昵图网官方站入口 昵图网素材图库官网入口  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  如何实现建站之星域名转发设置?  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel如何使用Collections进行数据处理?(实用方法示例)  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  香港服务器网站推广:SEO优化与外贸独立站搭建策略  *服务器网站为何频现安全漏洞?  电商网站制作价格怎么算,网上拍卖流程以及规则?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel如何自定义分页视图?(Pagination示例)  如何用y主机助手快速搭建网站?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Laravel如何实现用户注册和登录?(Auth脚手架指南)  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?