js冒泡排序和插入排序

本文介绍了JavaScript中的两种基础排序算法——冒泡排序和插入排序。冒泡排序通过相邻元素的比较和交换来逐步排序,而插入排序则通过构建有序子数组并插入未排序元素来实现。文章提供了详细的代码示例和原理解释,帮助读者理解和掌握这两种排序方法。
摘要由CSDN通过智能技术生成

js冒泡排序和插入排序

说明

来查这个说明大家在课上都是没听懂啊,但是都是好学生为了搞懂都来查。
好,回到正题,先说一下关于这个冒泡排序的重要性,这个虽然在排序当中算是比较简单的了,而且冒泡也是容易理解的一种排序方法。但是在多数的面试中可能会问到,更甚至还有可能要手写

冒泡排序

实现原理

数组中有 n 个数,依次比较相邻两个数,如果前者大于后者,就把两个数交换位置;如果前者小于后者,两个数的位置不变。这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1(数组的 length - 1) 轮,就完成了所有数的排序。

图片演示


注意看这张图片当中每一行中的橙色圆圈,这表示每一次对相邻的两个数字进行比较。在经过多次的比较后最大的数就跑到了这一行的最后一位。然后再从头开始进行同样操作。多次后就完成了排序

代码演示

友情提示:这只是第一次排序哦!!! 代码下有很充分的注释哦!不理解的记得看哦!!!

//定义数组[3,4,1,2]
var arr = [3,4,1,2];
// 遍历数组,次数就是arr.length - 1
for (var i = 1; i < arr.length ; i++) {
	// 利用if来判断大于,等于或小于,来判断是否进行位置交换
	if (arr[i] > arr[i + 1]) {
	//定义一个新的空的值
		var temp = arr[i];
		//对前后两的数进行交换
		arr[i] = arr[i + 1];
		//将数字依次放入新的空的值里
		arr[i + 1] = temp;
	}
}
// 控制台输出[3, 1, 2, 4]
console.log(arr) 

到这里相信大多数的同学都有认真的看代码。
如果有没有认真看的同学请自行回去看一下代码哦! ! !
接下来是全部的代码展示了哦。
要仔细看哦

//定义数组[3,4,1,2]
var arr = [3,4,1,2];
//遍历数组
for (var i = 1; i < arr.length; i++) {
//循环比较,判断是否交换位置
  for (var j = 0; j < arr.length-1; j++) {
  //判断前后两个数字的大小,以便判断是否交换位置
  if (arr[j] > arr[j+1]) {
  //定义一个新的空的值,以便用于交换
    var temp = arr[j+1];
    //交换前后两数字的值
    arr[j+1] = arr[j];
    将前一个数字放入空的值
    arr[j] = temp;
    }
  }
}
//输出结果[1,2,3,4]
console.log(arr);

总结

1、外层fou循环的作用:控制循环的次数。
2、内层fou循环的作用:进行两数交换,找每次的最大数,排到最后。
3、内部if语句的作用:进行前后两值的大小判断来进行下一步操作。
4、内部定义temp的作用:用于交换前后两数。可以参考交换两数中的空参。

插入排序

说明

插入排序是冒泡排序的优化,是一种更加直观的简单排序算法。
插排由于效率不高,速度较慢,大题考察少,出现频度不高,重点在于时间复杂度、空间复杂度、移动次数考察。

实现原理

通过构建有序数组的存储,对未排序的数组元素,在已排序的数组中从最后一个元素向第一个元素遍历,找到相应的位置并插入。

图片演示

在这里插入图片描述
由图片可以看出啊我们直接把待排序数组的第一个元素看作是一个有序的数组,从第二个至最后一个元素被看作一个无序数组。

代码演示

var arr = [10,8,100,31,87,70,1,88];
//先遍历无序数组的下标
for (var i = 1; i < arr.length; i++) {
//遍历并比较一个无序数组元素和所有有序数组元素
  for (var j = i; j > 0; j-- ) {
    if (arr[j - 1] > arr[j]) {
      var temp = arr[j - 1];
      arr[j - 1] = arr[j];
      arr[j] = temp;
    }
  }
}
//输出结果[1,8,10,31,70,87,88,100]
console.log(arr);
代码描述

1)从第一个元素开始,该元素可以被认为已经被排序
2)取出下一个元素,在已经排好序的序列中从后往前扫描
3)直到找到小于或者等于该元素的位置
4)将该位置后面的所有已排序的元素从后往前依次移一位
5)将该元素插入到该位置
6)重复步骤2~5

总结

1、外层fou循环的作用:遍历无序数组的下标。
2、内层fou循环的作用:遍历并比较一个无序数组元素和所有有序数组元素。
3、内部if语句的作用:进行前后两值的大小判断来进行下一步操作。
4、内部定义temp的作用:用于交换前后两数。可以参考交换两数中的空参。

末尾

既然都看到了这里相信你已经学会了冒泡排序和插入排序了吧!
既然学会了,觉得写的不错的点个赞再走吧~

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。 Quartz的优势: 1、Quartz是一个任务调度框架(库),它几乎可以集成到任何应用系统中。 2、Quartz是非常灵活的,它让您能够以最“自然”的方式来编写您的项目的代码,实现您所期望的行为 3、Quartz是非常轻量级的,只需要非常少的配置 —— 它实际上可以被跳出框架来使用,如果你的需求是一些相对基本的简单的需求的话。 4、Quartz具有容错机制,并且可以在重启服务的时候持久化(”记忆”)你的定时任务,你的任务也不会丢失。 5、可以通过Quartz,封装成自己的分布式任务调度,实现强大的功能,成为自己的产品。6、有很多的互联网公司也都在使用Quartz。比如美团 Spring是一个很优秀的框架,它无缝的集成了Quartz,简单方便的让企业级应用更好的使用Quartz进行任务的调度。   课程说明:在我们的日常开发中,各种大型系统的开发少不了任务调度,简单的单机任务调度已经满足不了我们的系统需求,复杂的任务会让程序猿头疼, 所以急需一套专门的框架帮助我们去管理定时任务,并且可以在多台机器去执行我们的任务,还要可以管理我们的分布式定时任务。本课程从Quartz框架讲起,由浅到深,从使用到结构分析,再到源码分析,深入解析Quartz、Spring+Quartz,并且会讲解相关原理, 让大家充分的理解这个框架和框架的设计思想。由于互联网的复杂性,为了满足我们特定的需求,需要对Spring+Quartz进行二次开发,整个二次开发过程都会进行讲解。Spring被用在了越来越多的项目中, Quartz也被公认为是比较好用的定时器设置工具,学完这个课程后,不仅仅可以熟练掌握分布式定时任务,还可以深入理解大型框架的设计思想。
[入门数据分析的第一堂课]这是一门为数据分析小白量身打造的课程,你从网络或者公众号收集到很多关于数据分析的知识,但是它们零散不成体系,所以第一堂课首要目标是为你介绍:Ø  什么是数据分析-知其然才知其所以然Ø  为什么要学数据分析-有目标才有动力Ø  数据分析的学习路线-有方向走得更快Ø  数据分析的模型-分析之道,快速形成分析思路Ø  应用案例及场景-分析之术,掌握分析方法[哪些同学适合学习这门课程]想要转行做数据分析师的,零基础亦可工作中需要数据分析技能的,例如运营、产品等对数据分析感兴趣,想要更多了解的[你的收获]n  会为你介绍数据分析的基本情况,为你展现数据分析的全貌。让你清楚知道自己该如何在数据分析地图上行走n  会为你介绍数据分析的分析方法和模型。这部分是讲数据分析的道,只有学会底层逻辑,能够在面对问题时有自己的想法,才能够下一步采取行动n  会为你介绍数据分析的数据处理和常用分析方法。这篇是讲数据分析的术,先有道,后而用术来实现你的想法,得出最终的结论。n  会为你介绍数据分析的应用。学到这里,你对数据分析已经有了初步的认识,并通过一些案例为你展现真实的应用。[专享增值服务]1:一对一答疑         关于课程问题可以通过微信直接询问老师,获得老师的一对一答疑2:转行问题解答         在转行的过程中的相关问题都可以询问老师,可获得一对一咨询机会3:打包资料分享         15本数据分析相关的电子书,一次获得终身学习
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miraitowa^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值