基于JavaScript实现的插入排序算法分析
作者:布瑞泽的童话 发布时间:2024-04-16 08:55:36
标签:JavaScript,插入排序,算法
本文实例讲述了基于JavaScript实现的插入排序算法。分享给大家供大家参考,具体如下:
根据排序过程中使用的存储器不同,可以将排序方法分为两大类:内部排序和外部排序。
内部排序是指待排序记录存放在计算机随机存储器中进行的排序过程;外部排序指的是待排序的记录数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。
下面介绍几种常见的内部排序方式:
插入排序
插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入已排好序的有序表中,从而得到一个新的、记录数加1的有序表。
插入排序有两个循环,外循环将数组元素挨个移动,而内循环则对外循环中选定的元素及它后面的那个元素比较。如果外循环中选中元素小,那么数组元素会向右移动,为内循环中的这个元素腾出位置。
下面我们通过js实现直接插入排序过程:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript插入排序</title>
</head>
<body>
<script type="text/javascript">
function insertSort(nums){//插入排序
var temp,
inner;
for(var outer=1;outer<nums.length;outer++){//外循环选中元素
temp=nums[outer];//选中元素
inner=outer;
while(inner>0&&(nums[inner-1]>=temp)){//内循环与选中元素对比
nums[inner]=nums[inner-1];//如果选中元素前面的元素大,则前面的元素移到右侧
inner--;//依次比较
}
nums[inner]=temp;//直到找到正确的位置
}
}
function show(nums){//显示数组
for(var i=0;i<nums.length;i++){
document.write(nums[i]+' ');
}
document.write('<br>');
}
var nums=[6,10,0,6,5,8,7,4,2,7];
show(nums);//6 10 0 6 5 8 7 4 2 7
insertSort(nums);
show(nums);//0 2 4 5 6 6 7 7 8 10
</script>
</body>
</html>
排序过程如下:
可以看到,插入排序的运行并非通过数据交换,而是通过将较大的数组元素移动到右侧,为数组左侧的较小元素腾出位置。其时间复杂度为O(n2)。
希望本文所述对大家JavaScript程序设计有所帮助。


猜你喜欢
- 前言面对计算密集型的任务,除了多进程,就是分布式计算,如何用 Python 实现分布式计算呢?今天分享一个很简单的方法,那就是借助于 Ray
- 字符串去除数字间的逗号在西文数字的表示中,很多格式是类似这样:123,456,789。如果得到这样的一个字符串,直接用int转换成整型肯定报
- 本文实例讲述了Python实现对不原生支持比较操作的对象排序算法。分享给大家供大家参考,具体如下:问题:想在同一个类的实例之间做排序,但是它
- 环境Win10Python3.6.6Django2.1.3中间件作用 中间件用于全局修改Django的输入或输出。中间件常见用途 缓存会话认
- 所谓“分块”,顾名思义,就是将数据集分成几块进行读取,比如有105条数据,一次读取10条,读取11次
- 1.用户输入月份,判断这个月是哪个季节month = int(input('Month:'))if month in [3,
- 在正式编写爬虫案例前,先对 scrapy 进行一下系统的学习。scrapy 安装与简单运行使用命令 pip install scrapy 进
- 首先这里声明一下,关于我测试浏览器的版本是chrome15.0.874.121 Firefox 8.01 IE9 IETester下面的代码
- 在SQL中系统已为我们提供了很非常丰富的函数:例:聚会函数avg, sum,count,max,min 日期函数:Day,Mon
- 大一上学期学习的内容之一,小黑屋比较好玩。1.导入函数库先导入random、time两个函数库的使用来达到随机生成人物、生成人物加载时间的目
- SQLSTATESQL SERVER 驱动程序错误描述 HY000所有绑定列都是只读的。必须是可升级的列,以使用 SQLSetPos 或 S
- 1.如果有ID字段,就是具有唯一性的字段 代码如下:delect table where id not in ( select max(id
- 调用 <script language="javascript" src="xxx.asp?m
- 日常维护中,经常会碰到线程被阻塞,导致数据库响应非常慢,下面就看看如何获取是哪个线程导致了阻塞的。1. 环境说明RHEL 6.4 x86_6
- Python写入Excel有时需要合并单元格、或者改变文字内容的颜色首先导入xlwt模块import xlwt创建文件名创建Excel工作簿
- π是一个无数人追随的真正的神奇数字。我不是很清楚一个永远重复的无理数的迷人之处。在我看来,我乐于计算π,也就是计算π的值。因为π是一个无理数
- shapefile是GIS中非常重要的一种数据类型,在ArcGIS中被称为要素类(Feature Class),主要包括点(point)、线
- wed的打印方法具我自己懂得知道的有: 1、JQuery插件Jqprint实现 2、JQery打印插件PrintArea实现网页打印 3、C
- 1、Introduction之前写过一篇文章:Mysql主从同步的原理。相信看过这篇文章的童鞋,都摩拳擦掌,跃跃一试了吧?今天我们就来一次m
- 概述做日志分析工作的经常需要跟成千上万的日志条目打交道,为了在庞大的数据量中找到特定模式的数据,常常需要编写很多复杂的正则表达式。例如枚举出