前端数据结构与算法复习日记---直接插入排序

news/2024/7/19 14:20:50 标签: 算法, js, 数据结构, 前端

码字不易,有帮助的同学希望能关注一下我的微信公众号:Code程序人生,感谢!代码自用自取。

在这里插入图片描述

直接插入排序是插入类排序算法里比较简单的一个了。

它的核心思路就是:

首先默认数组的第一项元素是最小的(升序),然后把它push进新数组里,然后对老数组进行一个循环遍历,把当前被遍历的这项元素与新数组里的每一项进行对比,如果比它小,就插入到当前新数组的位置。

这个算法还是比较简单,容易理解的,下面我们看一下代码实现:

function sort(arr) {
    var newArr = [];
    var first = arr[0];
    var len = arr.length;
    newArr.push(first);

    for(var i = 1; i < len; i++) {
        var newLen = newArr.length;
        var test = true;
        for(var j = 0; j < newLen; j++) {
            if(newArr[j] > arr[i]) {
                newArr.splice(j,0,arr[i]);
                test = false;
                break;
            }
        }
        if(b) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

console.log(sort([9,25,1,65,4,12,88]));

大白话阐述代码的实现过程:

代码里应该没有特别难看懂的地方,声明一个新空数组,把传入的需要遍历的数组的第一项push进这个新数组。

接下来对老数组进行遍历,因为老数组里当前遍历的这一项要与新数组的每一项进行对比,所以这里每次都保存一下新数组的长度,然后声明一个test变量用于辅助判断当前这个被遍历的老数组元素是否比新数组里的元素小,如果比它小,就通过splice方法添加进去,如果不比它小,就按照常规方法,push到新数组里。

最后把新数组return回去即可。

看下结果:
在这里插入图片描述
成功对传入的数组进行了排序。


有微信小程序课设、毕设需求联系个人QQ:505417246

关注下面微信公众号,可以领取微信小程序、Vue、TypeScript、前端、uni-app、全栈、Nodejs、Python等实战学习资料
最新最全的前端知识总结和项目源码都会第一时间发布到微信公众号,请大家多多关注,谢谢

在这里插入图片描述


http://www.niftyadmin.cn/n/1576491.html

相关文章

[linux]Linux入门

Linux操作系统文件系统基础知识详解(转载) blog.chinaunix.net/uid-26449305-id-3023428.html 三大经典 不可不知的Linux发行版本介绍&#xff08;转载&#xff09; blog.chinaunix.net/uid-26449305-id-3027547.html Linux 20 周年庆祝会 51CTO 会场 http://os.51cto.com/exp…

jQuery-过滤选择器一

1、基本过滤选择器 <script type"text/javascript">$(function(){$(div:first).css(background,red); //所有div元素中的第一个div元素$(div:last).css(background,blue); //所有div元素中的最后一个div元素$(div:not(.one)).css(background,green); //所…

原生JavaScript进阶训练---重写call方法

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 之前的系列中&#xff0c;跟着大家重写了数组常用的一些内置方法&#xff0c;今天给大家重写一下call方法&#xff0c;这个也是面试非常非常…

串口的AT命令

1.设置 DCD 功能模式 DCD 线路只在数据载波存在时打开(当建立GRPRS连接时&#xff0c;DCD输出低电平) AT&C1 2.设置 DTR 功能模式 DTR 由 ON 至 OFF&#xff08;电平从低到高&#xff09;&#xff1a; TA 在保持当前数据通话的同时&#xff0c;切换至命令模式。 AT&D1 …

聊聊什么是CommonJs和Es Module及它们的区别

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 前言 初衷&#xff1a;将我整理的笔记分享给大家&#xff0c;希望本篇文章能给你带来不一样的认知&#xff0c;不喜勿喷。 适合人群&#…

解决confluence的乱码问题

使用confluence时发现一些含有中文的页面中&#xff0c;中文都变成了问号。 继续搜索解决方案&#xff0c;发现时数据库中数据的格式不对&#xff0c;在mysql中输入以下命令&#xff1a;mysql> show variables like char%;------------------------------------------| Vari…

前端面试题及答案---CSS篇

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 CSS伪类与伪元素区别 伪类(pseudo-classes) 其核心就是用来选择DOM树之外的信息&#xff0c;不能够被普通选择器选择的文档之外的元素&…

HDFS用户指南(翻译)

HDFS用户指南原文地址&#xff1a;http://hadoop.apache.org/core/docs/current/hdfs_user_guide.html译者&#xff1a;dennis zhuang(killme2008gmail.com),有错误请指正&#xff0c;多谢。目的 本文档可以作为使用Hadoop分布式文件系统用户的起点&#xff0c;无论是将HDFS应用…