常用的排序算法--JavaScript

news2025/1/23 7:18:21

1.冒泡排序

这个函数使用了双重循环,第一个循环用于遍历数组中的每个元素,第二个循环用于比较相邻的元素,如果它们的顺序不正确,则交换它们的位置。在每次内部循环之后,最大的元素都会被移到数组的末尾,因此可以通过将外部循环的次数减1来避免比较已经排序好的元素。最后,函数返回已经排序好的数组。

2.选择排序

这个函数使用了双重循环,第一个循环用于遍历数组中的每个元素,第二个循环用于在未排序的部分中找到最小的元素。在第二个循环中,我们将当前元素的索引存储在minIndex变量中,如果找到了更小的元素,则更新minIndex变量。在内部循环之后,我们交换当前元素和未排序部分中的最小元素。最后,函数返回已经排序好的数组。

3.插入排序

这个函数使用了双重循环,第一个循环用于遍历数组中的每个元素,第二个循环用于将当前元素插入已排序的部分中。在内部循环中,我们将当前元素保存在key变量中,并将j初始化为i-1,表示已排序部分的最后一个元素的索引。然后我们在已排序的部分中逆序遍历,将每个大于key的元素右移一个位置。在完成内部循环后,我们将key插入到正确的位置。最后,函数返回已经排序好的数组。

4.归并排序

这个函数使用了递归方法,首先检查数组的长度是否为1或更小。如果是这样,它返回该数组。否则,它将数组拆分成左右两个子数组,每个子数组递归调用mergeSort函数。最后,它调用merge函数,将两个子数组合并成一个已排序的数组。merge函数使用两个指针遍历两个已排序的数组,并将它们的元素比较,然后将最小的元素推到结果数组中。最后,将任何剩余的元素添加到结果数组的末尾。

5.快速排序

这个函数使用了递归方法,首先检查左右指针是否重合。如果左指针小于右指针,则使用partition函数将数组分为两部分,其中左侧部分小于或等于右侧部分。然后,递归地对左右两部分进行快速排序。partition函数使用最右侧元素作为主元素,将其移动到正确的位置,并将其分隔成两部分。它使用i变量跟踪左侧小于或等于主元素的最后一个元素。在遍历过程中,如果当前元素小于或等于主元素,则将其与i处元素交换,同时将i增加1。最后,将主元素移动到i+1处,这是左右两部分的分界点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MSR015/MSR025低温漂、低功耗电压基准可pin对pin兼容REF015/REF025

MSR015/MSR025 是低温漂、低功耗、高精度 CMOS 电压基准, 具有0.05% 初始精度、低功耗特点。可pin对pin兼容REF015/REF025。该器件的低输出电压迟滞和低长期输出电压漂移特性,进一步提高稳定性和系统可靠性。 此外,器件的小尺寸和低运行电流特…

《一种使用光电容积图和生物特征进行无需校准的非侵入式血压估计方法》阅读笔记

目录 一、论文摘要 二、论文十问 Q1:论文试图解决什么问题? Q2:这是否是一个新的问题? Q3:这篇文章要验证一个什么科学假设? Q4:有哪些相关研究?如何归类?谁是这一…

GB/T25915.1法规基本标准-附 录 B(资料性)等级划分计算

附 录 B(资料性)等级划分计算实例 B.1 示例1 B.1.1 某个洁净室占地面积18m2,规定洁净度级别为动态ISO5级。使用采样流量为28.3L/min的 离散粒子计数器进行分级测试。2个关注粒径分别为:D≥0.3μm 和D≥0.5μm。 查表 A.1,采样点数 NL 为6。 B.1.2 从表1查得ISO5级的粒子浓度…

设计模式梳理

快速回顾 类别名称应用场景例子创建型模式Factory模式共用统一接口AbstactFactory模式共用统一接口Singleton模式只构建一次,每次构建只返回自己Builder模式一步步的进行复杂对象的构建链式构造器,解决复杂对象多个属性可选择性地设置的问题&#xff0c…

【ChatGPT】你会是被AI抢饭碗的那类人吗?

文章目录 前言一、AI替代“基础性工作”,二、AI没有魔法:人类做不到,它也做不到三 人类的恐惧:被替代、被超越四 AI让语言返祖,小语种与文化“濒危灭绝”五 人类的未来,教育何去何从?总结 前言 …

2023/5/9总结

Java基础(3) 1、成员变量和局部变量的区别 2.private关键字 是一个权限修饰符可以修饰成员变量和成员方法作用是保护成员不被别的类使用,被private修饰的成员只能在本类中才能访问 针对private修饰的成员变量,如果需要被其它类使…

缓存穿透、缓存雪崩和缓存击穿

1 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存中没有,每次查询都要去数据库中查询,导致频繁地访问数据库,从而影响系统的性能。攻击者可以利用这一点,对系统进行拒绝服务攻击。 1.1 缓存穿透举例 攻击者…

课程《JavaWeb基础框架程序设计》考试题上篇——基础应用题(计算应用、水仙花数)

文章目录 📋前言🎯第一题(30分)🎯第二题(30分)📝最后 📋前言 这篇文章是大学课程《JavaWeb基础框架程序设计》考试题目的内容,包括了原题和答案。题目只包括…

开关电源基础07:离线式开关电源变压器设计(2)

说在开头:关于那几年 1933年希特勒上台成为德国总理,纳粹党开始了针对犹太人的运动。英国的弗雷德里克.亚历山大.林德曼教授到访柏林,他制定了一份名单,开列的都是处境不妙的犹太科学家,趁机邀请他们离开德国&#xf…

Java EE--多线程(一)

目录 一、认识多线程 1.1 概念 (1) 线程是什么 (2)为啥要有线程? (3) 进程和线程的区别 (4)Java 的线程和操作系统线程的关系 1.2 创建线程 方法1 继承 Thread 类 方法2 实现Runnable接口…

数据结构学习记录——哈夫曼树(什么是哈夫曼树、哈夫曼树的定义、哈夫曼树的构造、哈夫曼树的特点、哈夫曼编码)

目录 什么是哈夫曼树 哈夫曼树的定义 哈夫曼树的构造 图解操作 代码实现 代码解析 哈夫曼树的特点 哈夫曼编码 不等长编码 二叉树用于编码 哈夫曼编码实例 什么是哈夫曼树 我们先举个例子&#xff1a; 要将百分制的考试成绩转化成五分制的成绩 if(score < …

ASEMI代理ADV7391BCPZ原装ADI车规级ADV7391BCPZ

编辑&#xff1a;ll ASEMI代理ADV7391BCPZ原装ADI车规级ADV7391BCPZ 型号&#xff1a;ADV7391BCPZ 品牌&#xff1a;ADI /亚德诺 封装&#xff1a;LFCSP-32 批号&#xff1a;2023 安装类型&#xff1a;表面贴装型 引脚数量&#xff1a;32 工作温度:-40C~85C 类型&…

ChatGPT实现markdown 格式与 emoji 表情

markdown 格式与 emoji 表情 书写文章时&#xff0c;巧妙的使用一些小图标&#xff0c;可以给文章增加不少的灵动感&#xff0c;读者也会感觉更加轻松。恰当的图标也能增进读者对内容的理解。ChatGPT 目前不能直接联网&#xff0c;但可以使用 emoji 表情文字来达到类似的效果。…

笔记本电脑开机黑屏没反应怎么办?

笔记本电脑开机黑屏没反应怎么办&#xff1f;有用户电脑开机之后&#xff0c;桌面会变成黑屏显示。而且是常常都会出现这样的问题&#xff0c;非常影响自己的电脑使用体验。那么遇到这个问题要怎么去进行问题的解决呢&#xff1f;来看看以下的解决方法吧。 准备工作&#xff1a…

超级详细的mysql数据库安装指南

MySql数据库 如果你的电脑是mac那么你看这位大佬的分享。 如果你的电脑是windows&#xff0c;参考下面的安装步骤。 一、下载mysql数据库&#xff1f; 进入MySQL官方网站&#xff08;MySQL Community Downloads&#xff09;&#xff0c;按下图顺序点击 1、进入下载页面 2、…

Dom树,什么是dom树?

相信很多初学前端的小伙伴&#xff0c;学了html, css, js之后&#xff0c;会遇到 一个名词 DOM树。 首先说一下DOM是什么&#xff1f; DOM 是 Document Object Model&#xff08;文档对象模型&#xff09;的缩写。 举个例子 我们日常生活中&#xff0c;经常会遇到一些写文档…

Spring Cloud第二季--消息驱动Spring Cloud Stream

文章目录 什么是Spring Cloud StreamStream 原理 牛刀小试消息重复消费问题 什么是Spring Cloud Stream Spring Cloud Stream is a framework for building highly scalable event-driven microservices connected with shared messaging systems. The framework provides a fl…

linux系统函数的运用

函数 函数详解函数的作用函数的定义函数的返回值函数的作用范围函数传参函数递归函数库 函数详解 函数的作用 在编写shell脚本的时候&#xff0c;经常会发现在多个地方使用了同一段代码&#xff0c;如果只是一小段代码&#xff0c;一般也无关紧要&#xff0c;但是要在脚本中多…

如何禁止电脑运行游戏?

在休息的时候&#xff0c;很多人都喜欢使用电脑玩游戏来消磨时间&#xff0c;但是对于未成年人来说&#xff0c;很容易沉迷游戏&#xff0c;从而影响正常的学业和成长。那么如何才能禁止电脑运行游戏呢&#xff1f;下面我们就来了解一下。 除了将电脑游戏卸载之外&#xff0c;还…

markdown甘特图语法介绍

1. 介绍 甘特图&#xff08;Gantt chart&#xff09;又称为横道图、条状图(Bar chart)。其通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。 2. 语法 1. 代码通用语法 在 markdown 的 代码模块 中编写甘特图&#xff0c;类型是mermaid&a…