数组及数组方法

1.数组定义

数组是指一组数据的集合,其中每个数据被称为元素。

2.创建数组的方法:

(1)利用数组字面量 创建数组 并赋值 默认值为 1 2 3

var  arr=[1,2,3];

(2)利用new Array() 创建数组

var arr = new Array();

3.变量的下标,也可以叫索引,从0开始,依次往后递增。

4.数组可以通过索引(下标)来访问、设置、修改对应的数组元素。

5.数组的遍历:

(1)for (let i=0;i<arr.length;i++){

    console.log(arr[i]);

}

(2)for(let value of arr){

             console.log(arr[value])

}

6.数组方法

push:向数组的末尾添加一个或多个元素,格式为(操作符).push(添加的元素,添加的元素)

pop:删除并返回数组的最后一个元素,.pop()

unshift:向数组的开头添加一个或多个元素,并返回新的数组长度,.unshift(添加的元素,添加的元素)

shift:删除数组中第一个元素 并返回删除的元素,.shift()

Array.isArray(对象名):判断当前的对象 是不是数组

map:返回一个新的数组,数组中的元素为原始数组的处理后的值,map 方法会按照原始数组中的元素顺序依次处理元素

例如:    let newArray = array.map(x=>x+2);

filter:创建一个数组,新的数组中的元素是通过检查指定数组中符合条件的元素,注意filter不会对空的数组进行检测,不会改变原始数组。

every:用于检测数组中的所有元素是否符合指定的条件,如果数组中检测的有一个元素不满足,则整个表达式返回false 并其他元素不会再进行检测,如果所有的元素满足条件 则返回true

some:用于检测数组中的元素是否满足指定的条件,会依次执行数组中每个元素:如果有一个元素满足条件 则返回true,如果没有满足条件的元素 返回 false

splice:用于添加 或删除数组中的元素 .splice(开始下标,长度);

注意:这个方法会改变原始数组;

如果仅删除一个元素,则返回一个元素的数组

sort:对元素小于十的数组进行排序;如果元素有大于十的,则添加形参a,b,对a和进行大小比较;

冒泡排序:

 数组的遍历:

数组中的每一个元素都可以通过索引访问到。数组的索引通常从0开始,即数组中第一个元素的索引为0.数组的最后一个元素位于(n-1)个索引处。我们将其称之为基于0的索引。数组也可以是基于其它数的,我们将其称之为基于n的索引。

使用for循环简单的遍历数组中的所有索引,可以访问数组中的所有元素。

元素的插入:

插入尾部

在数组还有足够的空间可供插入时,在数组的尾部插入一个元素是非常容易的。找到数组最后一个元素的索引,并将新插入元素的索引+1即可完成插入。

任意位置插入

通过将该位置后的所有元素的位置向后移动,可在该位置插入元素。

void insert_position(int arr[]){

    int i=0,pos,num;
    printf("输入要插入的元素值:");
    scanf("%d",&num);

    printf ("输入要插入元素的索引位置");
    scanf("%d",&pos);

    for(i=n-1;i>=pos;i--){
        arr[i+1]=arr[i];
    }
    arr[pos]=num;
    n=n+1;//增加已使用索引的总数

删除尾部元素:

只要数组不为空,删除数组中的元素是很容易的。找到最后一个元素的索引,然后删除该元素即可。

删除任意位置元素:

可以在任意索引处删除元素,方法是删除该位置的元素,然后将该位置之后的所有元素向前移动以填充删除的位置。

void delete_position(int arr[]){

    int i,pos;
    printf("输入要删除元素的索引位置");
    scanf("%d",&pos);

    for (i=pos;i<n-1;i++>){
        arr[i]=arr[i+1];
    }
    n=n-1;增加已使用索引的总数

访问
数组可以直接使用索引访问,因此,访问数组元素的时间复杂度为O(1)

查找
从数组中查找一个给定的值,需要遍历数组中的每一个元素,知道找到给定值为止。假设查找的形式为线性查找(数组最基本的查找形式),则查找的时间复杂度为O(n).

也存在一些其它的查找算法,比如,二分搜索,可在O(log n)的时间复杂度内搜索,但前提是当前数组为有序数组。

插入
在数组的两个元素之间插入一个新的元素,需要将插入之后的所有位置的元素向后移动。这就意味着如果在数组的开头插入元素,需要将数组的所有元素向后移动,因此插入操作的时间复杂度为O(n)

删除
在数组的两个元素之间删除一个元素,需要将删除位置之后的所有位置的元素向前移动。这就意味着,如果删除数组的第一个元素,需要将数组的所有元素统一向前移动,因此删除操作的时间复杂度为O(n)

空间要求
数组仅占据用于存储指定数据类型的元素的空间,这就意味着,存储n个元素所要求的空间复杂度为O(n)

数组的优点
相比其它类型的数据结构,数组有以下优点:

数组允许随机访问数组元素,每个存储在数组中的元素可以通过直接访问其索引来使用
数组对存储友好。这意味着在某些情况下,由于数组的线性存储方式,代码的执行顺序会大大提高
数组的缺点
声明数组时,需要指定数组的长度。初始声明数组的长度过长或过短,在移动数组元素时都会有导致效率变低
插入和删除元素之后保持数组的连续性代价是昂贵的,因为有可能需要重新排列所有数组元素。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值