常见排序算法的js实现

2023-10-30

常见排序算法的js实现
冒泡排序

<script type="text/javascript">
		var a = [9, 6, 7, 67, 8];
		for(var i = 0;i < a.length - 1;i++) {
			for (var j = 0;j < a.length - 1-i;j++){
				if (a[j] > a[j+1]){
					var temp = a[j];
					a[j] = a[j+1];
					a[j+1] = temp;
			}
		}

		}
		console.log(a);
	

	</script>

选择排序

<script type="text/javascript">

		var a = [9, 6, 7, 67, 8];
		//实现方法一
		for(var i = 0;i < a.length - 1;i++) {
			var min = i;
			for (j = i + 1;j < a.length; j++){
				if (a[min] > a[j]){
					min = j;
				}
			}
			if (min !== i){
				var temp = a[min];
				a[min] = a[i];
				a[i] = temp;
			}
		}
		console.log(a);


		//实现方法二
		for (var i = 0; i < a.length - 1; i++){
			for (j = i + 1; j < a.length; j++){
				if (a[i] > a[j]){
					var temp = a[i];
					a[i] = a[j];
					a[j] = a[i];
				}
			}
		}
		console.log(a);
	</script>

插入排序

<script>
        function insertionSort(arr) {
            for (var i = 1; i < arr.length; i++) {
                var preIndex = i;
                var current = arr[i];
                while (preIndex > 0 && arr[preIndex - 1] > current) {
                    arr[preIndex] = arr[preIndex - 1];
                    preIndex--;
                }
                arr[preIndex] = current;
            }
            return arr;
        }

        var array = [1, 2, 4, 5, 6, 3, 5, 0, 38]
        console.log(insertionSort(array))
    </script>

快速排序

<script type="text/javascript">
		var arry = [2, 6, 98, 45, 34, 76, 34, 49, 88, 99, 709, 21, 65]

		function quickSort(arry) {
			if(arry.length <= 1){
				return arry
			}
			var centerIndex = Math.floor(arry.length/ 2);
			var center = arry.splice(centerIndex, 1);
			var left = [];
			var right = [];
			for(i = 0; i < arry.length; i++) {
				if(arry[i] < center) {
					left.push(arry[i])
				} else {
					right.push(arry[i])
				}
			}
				return quickSort(left).concat(center, quickSort(right))
		}

		arr = quickSort(arry)
		console.log(arr)
	</script>

希尔排序

<script>
        function shell(arr) {
            len = arr.length;
            // 初始化间隔
            grap = Math.floor(len / 2);
            while (grap >= 1) {
                for (var i = grap; i < len; i++) {
                    temp = arr[i];
                    pre = i;
                    while (pre - grap >= 0 && arr[pre - grap] > temp) {
                        arr[pre] = arr[pre - grap];
                        pre -= grap;
                    }
                    arr[pre] = temp;
                }
                grap = Math.floor(grap / 2)
            }
            return arr
        }

        var array = [1, 2, 4, 5, 6, 3, 5, 0, 38]
        console.log(shell(array))
    </script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见排序算法的js实现 的相关文章

  • 题目78:日志排序

    运维工程师采集到某产品线网运行一天产生的日志n条 现需根据日志时间先后顺序对日志进行排序 日志时间格式为H M S N H表示小时 0 23 M表示分钟 0 59 S表示秒 0 59 N表示毫秒 0 999 时间可能并没有补全 也就是说 0

随机推荐

  • qml的focus问题

    这是应用中令人头痛的焦点问题 如果没有焦点项 键事件就不能被处理 它就不能在一个屏幕中做任何事情 应用程序会挂起 基本上 qml中的基本元素是 item item有两个属性 焦点和活动焦点 activeFocus是只读的 当将焦点设置为一个
  • ubuntu 中 :dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此问题

    E dpkg 被中断 您必须手工运行 sudo dpkg configure a 解决此问题 sudo rm var lib dpkg updates sudo apt get update 转载于 https www cnblogs co
  • Keil5关于.h文件编译时遇见报错打不开时的解决方案

    添加路径即可
  • Centos设置ssh免密登录

    查看安装的ssh软件 rpm qa查询系统安装的所有软件 对前面rpm查询结果进行搜索ssh rpm qa grep ssh 安装netstat工具查询软件进程的端口号 yum y install net tool 使用netstat查询2
  • 品味树莓派:GPIO口定义、电气特性、启动状态等基础说明

    文章目录 目录 GPIO口定义 电气特性 启动状态 总结 目录 树莓派相比成品化的电脑来说有很多独立的GPIO口可供开发使用 可以方便的实现很多实物相关的功能 本文将对树莓派开放给用户的GPIO口的针脚定义 电气特性 启动状态等基础内容做个
  • svm多分类_数据挖掘算法——常用部分分类算法

    分类算法 分类是在一群已经知道类别标号的样本中 训练一种分类器 让其能够对某种未知的样本进行分类 分类算法属于一种有监督的学习 分类算法的分类过程就是建立一种分类模型来描述预定的数据集或概念集 通过分析由属性描述的数据库元组来构造模型 分类
  • OpenSSL之EVP(一)——数据结构及源码结构介绍

    EVP简介 Openssl EVP提供了丰富的密码学中的各种函数 Openssl 中实现了各种对称算法 摘要算法以及签名 验签算法 EVP 函数将这些具体的算法进行了封装 EVP 主要封装了如下功能函数 1 实现了 base64 编解码 B
  • 新浪期货数据接口

    附注 对于期货数据 一直在寻找互联网上能够获得的比较好的数据源 最近发现了 新浪期货 的数据源 可以提供一分钟的期货K线数据 http hq sinajs cn list TICKER 对于国内期货连续 Ticker为正常Ticker加个0
  • Deep Residual Network

    先阅读者两篇写的比较好的博客 https blog csdn net dulingtingzi article details 79870486 https blog csdn net qq 31050167 article details
  • 高德地图绘制标记点,点击弹出弹框进入第三方地图软件

    需求 根据经纬度绘制标记点 点击标记点弹出弹框和底部按钮 点击顶部弹框进入二级界面 点击底部按钮弹出第三方地图软件选择页 实现跨进程跳转 效果图 项目是公司项目 只放出重要部分代码 final Marker marker1 aMap add
  • 计算机图形学入门(八)-着色(插值、高级纹理映射)

    目录 重心坐标 应用纹理 1 纹理分辨率很小 2 纹理分辨率过大 纹理的应用 颜色 环境贴图 Environment Map 法线贴图 凹凸贴图 位移贴图 三维纹理和三维噪声 着色信息的记录 学习视频来源 GAMES101 现代计算机图形学
  • 【操作系统】进程间通信的五种方式

    引言 1 进程对白 管道 记名管道 套接字 1 管道 2 虫洞 套接字 3 信号 4 信号旗语 信号量 5 进程拥抱 共享内存 引言 进程作为人类的发明 自然免不了脱离人类的习性 也有通信需求 如果进程之间不进行任何通信 那么进程所能完成的
  • 关于你STM32F407片内FLASH擦除失败的问题

    近日 发现STM32F407片内FLASH在写入数据时某些情况下会出现扇区擦除不成功的情况 使用正点原子的代码测试也出一样的情况 网上搜索也没找到较为理想的答案 只有一篇文章遇到同样问题 也是使用了一个不太可靠的办法 但是好在可以解决问题
  • DM8无图形界面安装与使用

    本机实验环境 centos7 9 参考文档 数据库安装 达梦云适配中心文档 dameng com https eco dameng com docs zh cn start install dm linux prepare html 1 系
  • “红山开源”创新论坛

    ChinaOSC 2022 红山开源 创新论坛将于2022年8月20日14 00 17 00在陕西省西安高新国际会议中心召开 红山开源 创新论坛重点聚焦战略科技领域相关需求 邀请知名院士和专家共同探讨战略科研任务开源众创组织模式和项目孵化方
  • 部署tomcat时出现No artifacts marked for deployment

    这种错误主要是因为没有设置导出包 解决方法 File gt Project Structure gt Artifacts 然后点击ok 然后记得apply ok 此时再回到问题所在 点击Fix即可 或者如下
  • JAVA中的正则表达式

    一 正则表达式的构成 1 字符类 abc a b c abc 任何字符 除了a b c a zA Z a到z或A到Z 两头的字母包含在内 范围 2 预定义字符类 任何字符 d 数字 0 9 D 非数字 0 9 s 空白字符 t n x0B
  • Python爬虫JS解密详解,学会直接破解80%的网站(二)!!!

    文章目录 前言 1 网页查看 2 JS解密过程 细心看哦 3 解密答案 完整代码 CSDN独家福利降临 Python爬虫JS解密详解 学会直接破解80 的网站 25个爬虫项目宝藏教程 你值得拥有 前言 Glidedsky这关的JS解密不同于
  • js rsa加密_Python实现RSA(jsencrypt)加密的两种方式

    RSA是一种常用加密算法 经常用在前端向后端传送密码的时候 一 通过运行rsa js文件加密 rsa js文件下载地址 https gitee com youchuanming rsa jsencrypt import urllib pur
  • 常见排序算法的js实现

    常见排序算法的js实现 冒泡排序 选择排序