首页 > 编程语言 >JavaScript 实现 -- 插入排序

JavaScript 实现 -- 插入排序

时间:2022-10-12 22:31:31浏览次数:54  
标签:JavaScript -- 插入排序 元素 数组 排序 复杂度

前言

本文主要记录了JavaScript 实现 -- 插入排序,以及原理、时间复杂度、空间复杂度和算法稳定性。

插入排序

插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个高效的算法 。

插入排序原理

从数组中第二个元素开始比较前面的元素,如果前的元素大,就把它向后排,以此类推完成排序。

在这里插入图片描述

arr = [6,3,2,5,4,1] 是待排序数组;

首先取出数组中第二个元素 3 ,去比较前一个元素 6 ,6 比 3大,所有把6移动到3的位置上,6前面没有元素所以将把 3 插入到 6 位置上;

然后取出数组中第三个元素 2 ,6 比 2 大,将 6 移动到 2 的位置上,比较 3 比 2 大,将 3 移动到 6 的位置上,3前面没有元素所以将2插入到3的位置上;

依次类推,完成整个数组的排序。

示例代码

	Array.prototype.insertionSort = function() {
	    for(let i =1;i<this.length;i++){
	        let tmp = this[i];
	        let j = i;
	        while(j>0){
	            if(this[j-1] > tmp){
	                this[j] = this [j-1];
	            }else{
	                break;
	            }
	            j--;
	        }
	        this[j] = tmp;
	    }
	}

时间复杂度

  

最坏的情况:外层循环n-1次,内层循环1+2+3+…+(n-2)=(n-2)(n-1)/2次,所以最坏情况是O(n^2);

最好的情况(已经有序):O(n);

平均情况为:(n^2 + n)/2,**时间复杂度为O(n^2)**;

空间复杂度

插入排序过程中,需要一个临时变量存储待排序元素,所以**空间复杂度为O(1)**。

算法稳定性

插入排序是稳定的排序算法;

本文到此结束

如果大家还有什么其他想法,欢迎在评论区交流!

标签:JavaScript,--,插入排序,元素,数组,排序,复杂度
From: https://blog.51cto.com/u_15718546/5751711

相关文章

  • php 二维数组排序
    PHP二维数组排序(简单易懂版)1.先定义一个数组  $data[]=array('volume'=>67,'asd'=>'b','edition'=>2);$data[]=array('volume'=>86,'cc'=>'b','edition'=>1......
  • 7.函数入门
    函数函数的作⽤函数的使⽤步骤函数的参数作⽤函数的返回值作⽤函数的说明⽂档函数嵌套函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能......
  • 帝国CMS:如何对文章进行页面排版(一)环境安装?
    排版对于做网站十分重要,如何给帝国CMS系统里的数据进行排版?插件:htmlbeautify环境:Centos7.6+PHP5.6+帝国7.5安装步骤:1.配置环境,安装tidy扩展;  1.1 安装依赖......
  • 狂神说CSS
    什么是CSS如何学习1.CSS是什么2.CSS怎么用(快速入门)3.CSS选择器(重点+难点)4.美化网页(文字,阴影,超链接,列表,渐变...)盒子模型6.浮动7.定位8.网页动画(特效效果......
  • P8298 [COCI2012-2013#2] POPUST 题解
    题目题目大意有\(N\)种饭菜,每种饭菜有两种价格\(A_i\)和\(B_i\)。对于两种价格,如果你的选的第一道菜是\(i\),则它的价格为\(A_i\)否则为\(B_i\),求对于点\([......
  • WORD
    目录目录目录快速工具栏标题栏功能区选项卡标尺插入文本删除文本选择文本复制文本保存文本更正错误开始字体字体大小字体样式字体颜色更改大小写段落对齐方式缩进和间距样......
  • [日常]2022-10-12发病
    想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想和。想......
  • 151-《大数据架构师》Flink Slot 管理 和 Task 部署执行详解_ev
    总结之前内容          ......
  • 实验二,类与对象
    task.4Complex.hpp#include<iostream>#include<math.h>usingnamespacestd;classComplex{public:Complex(floatr=0,floati=0):real{r......
  • Linux基础
    1.目录结构介绍基本介绍LIunx的文件系统是采用层式的树状目录结构,在此结构中的是最上层是根目录/,然后在次目录下在创建其他目录。在Liunx世界里,一切皆为文件树状目......