数组

数据结构

数据结构顾名思义就是数据的结构(逻辑结构 存储结构 算法

存储结构(数据存储的结构方式)

线性结构

  • 数组(顺序表)

  • 队列

  • 链表

非线性结构

  • hash(散列表)

只要是能存数据的容器就必须具备增删改查的方法

一、数组

1、JS数组的概念

数组的字面意思就是一组数据,一组数据(一般情况下是相同类型的数据, 不一定都是数字)

2、数组的声明定义;(引用数据类型)

(1)使用中括号声明数组

 (2)使用new关键词进行声明(对象)

 3、length属性来访问对应的长度

数组长度(数组元素的个数) : arr.length length属性, 不仅是只读的,也可以设置

 4、下标访问

 

 5、数组的赋值

给数组赋值,就是给数组的元素赋值,需要通过给数组的每个元素一一赋值

 二、数组遍历

1、传统的for循环遍历

 2、for in 遍历( 对象 下标 迭代 next)

 3、for of 进行遍历( 数组 迭代器来实现的)

 三、数组的方法

数组是一个存储结构(增删改查的操作)

1、添加(add push append...)

(1)栈方法(先进后出 后进先出)push入栈 pop出栈

将内容添加到最后面

push方法(添加到最后一个

 (2)队列方法(先进先出 后进后出)

将内容追加到最前面

unshift方法(添加到第一个

 2、删除(delete(硬删) remove(软删)..)

(1)栈方法

pop方法(删除最后面的

 (2)队列方法

shift方法(删除第一个

 3、修改(replace替换 update更新)

(1)反转 reverse(将最后一个变到第一个 一个个对应的换位置)

 (2)排序sort

 4、不影响原本数组的方法

(1)concat(连接)

 (2)slice(切片)

 5、改变原数组的方法

(1)splice方法(主要做删除)

 (2)splice详细讲解

 

 

 四、排序算法

1、冒泡排序 (最基础的排序)

冒泡排序就是相邻两个数比较,大数在前,小数在后,两数交换位置,依次两两比较,每比较完一趟就会得到最大的数在最后,下一趟就少一个数,然后继续两两比较,直到比较了剩下一个数,得到从小到大排列的数组

 2、选择排序(选择最大值(或者最小值)的下标进行比较的排序)

选择排序就是先默认第一个数为最大值(或者最小值),然后遍历数组进行寻找比最大值大的数的下标(比最小值小的数的下标),记录这个下标,内层循环结束之后判断这个下标是否是最开始默认的第一个数的下标,不是就两个数进行交换位置,就这样依次进行下去每一趟都比较出一个最大值(最小值)出来,比较完后得到一个由大到小(由小到大)的数组。

 3、快速排序(在数据量低于10万内(不多的)最快的 冒泡排序的进阶) 二分O(nlogn)

快速排序的思想画图如下图:

 

 代码如下:

 五、练习题

(1)求数组中所有元素的和

 (2)让数组中的元素交换位置(重要)

 (3)将[1,2,34,58,9,5]变成[5,9,58,34,2,1]

 (4)求数组的最大数和最小数(重要)

 (5)求数组的最小数的下标(重要)

 (6)不改变原数组, 取出数组[3,2,4,5,8,6,3,9]中的[5,8,6].

 (7)在数组[1,2,3,4,6,7,8]中对应的位置插入5, 变成[1,2,3,4,5,6,7,8]

 (8)将数组 ["我","是","一","只","笨","鸟"] 改成 ["我","是","一","只","聪","明","鸟"], 并打印出: "我是一只聪明鸟"

 (9)删除数组[20,23,21,34,54,55,32]中的倒数第二个和倒数第三个元素

 (10)将数组[1, 5, 6, 3, 2, 8, 9, 4] 降序排序

 (11)请将数组[1,46,74,3,5,5]中的元素右移1位

 (12)插数:在数组[1,46,74,3,5,5]的下标为2的位置插入一个数字8,结果为[1,46,8,74,3,5,5]

 (13)冒泡排序自己写一遍.

 (14)给定一个含有n个元素的整型数组a,求a中所有元素的和

 (15)给定一个含有n个元素的整型数组a,打印其中的最大值和最小值.

 (16)给定一个不存在重复元素的整数数组,例如[6,4,7,2,5,8]和一个数字,例如10,请设计一个函数找出两个元素(或同一个元素加自身),并且使这两个数的和为给定数字,并打印出来

        // 例如[6,4,7,2,5,8]和数字10. 打印结果为: 6,4  2,8  5,5

(17)随机给出一个10位以内的数,然后输出该数共有多少位,并将每位的数字保存到数组中.

        //      如:1342, 位数为:4, 数组为:[1,3,4,2] 

 (18)给定两个升序整型数组a和b,打印其共同元素,比如:a = [0, 1, 2, 3, 4],b = [1, 3, 5, 7, 9],输出 1, 3

 (19)有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中,      

        //      如: [2,3,4,56,67,98]    //63,

 (20)取出数组[1,3,1,4,2,3,6,2,6,1,5]中的重复项,存入一个新的数组,并从大到小排序

 (21) 生成13位条形码(对之前的知识综合练习)

//       Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。            例如:690123456789  -> [6,9,0,1,2,3,4,5,6,7,8,9]      第十三位计算其校验码的过程为:    1,前十二位的奇数位和6+0+2+4+6+8=26  2,前十二位的偶数位和9+1+3+5+7+9=34  3,将奇数和与偶数和的三倍相加26+34*3=128 4,取结果的个位数:128的个位数为8    5,用10减去这个个位数10-8=2      所以校验码为2(注:如果取结果的个位数为0,那么校验码不是(10-0=10),而是0

//       实现函数ean13(n)计算验证码,输入12位条码,返回带验证码的条码。

//       例如:输入:692223361219输出:6922233612192

 (22)开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”,既为3的倍数又为5的倍数则替换为单词“FlipFlop”。

 

 

 

posted @   木木子夕  阅读(232)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示