数组、排序算法和二维数组

第一部分、数组

1.创建数组

  1. 使用“[ ]”字面量来创建数组
  2. 使用“new Array()”创建数组
var arr1 = [];    //创建一个空数组

var arr2 = [1,2,3,4];    //创建一个有数据的数组

var arr3 = new Array();

var arr4 = new Array(1,2,3,4);

2.数组的属性

数组的属性:length(数组的默认属性,表示数组的长度)

var arr3 = new Array();

var arr4 = new Array(1,2,3,4);

console.log(arr3.length);    //结果为0

console.log(arr4.length);    //结果为4

3.数组元素的访问

使用索引来访问数组中的元素,索引是一个数字,从0开始。

var arr = [1,2,3,4];

console.log(arr[0]);    //结果为1
console.log(arr[1]);    //结果为2
console.log(arr[2]);    //结果为3
console.log(arr[3]);    //结果为4

4.数组的遍历

数组遍历是将数组中的元素全部访问一遍,可以利用for循环来实现,在for循环中让索引从0开始自增。

如果数组元素比较多时,计算数组元素的个数不太方便,这时候可以利用“数组名.length”来快速地获取数组长度。

(1)一般遍历

var arr = [1,2,3,4];

for(var i=0;i<arr.length;i++){
    console.log(i);
}

(2)for…in循环遍历

var arr = [1,2,3,4,5,6,7,8,9]; 

for(var k in arr){
    console.log(k);    //打印数组每个元素的索引值
    console.log(arr[k]);    //打印数组每个元素的值
}

例1:获取数组元素的最大值

var arr = [1,2,3,4];

var max = arr[0];    //先假定第一个数是最大值

for(var i=1;i< arr.length;i++){
    if (arr[i]>max) {
        max = arr[i];
    }
}

console.log(arr);

console.log(max);

例2:反转数组中的元素

var arr = [1,2,3,4,5,6,7,8,9]; 

console.log(arr);    //输出原数组

for(var i=0;i<parseInt(arr.length/2);i++){
    var temp=arr[i];
    arr[i] = arr[arr.length-i-1];
    arr[arr.length-i-1]=temp;
}

console.log(arr);    //输出反转后的数组

第二部分、排序算法

1.冒泡排序

冒泡排序算法:在冒泡排序的过程中,按照要求从小到大排序或从大到小排序,不断比较数组中相邻两个元素的值,较小或较大的元素前移。

var a = [10,7,5,27,98,31];

console.log("排序前:",a);

for(var i=0;i<a.length;i++){    //外循环:控制比较的轮次
    for(var j=0;j<a.length-i-1;j++){    //内循环:进行数据的比较,小数向前移动或者大数向后移动
        if (a[j]>a[j+1]) {
            var temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
        }
    }
}

console.log("排序后:",a);

2.插入排序

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

var arr = [10,8,100,31,87,70,1,88];

for(var i=0;i< arr.length;i++){
    for(var j=i;j>=0;j--){
        if (arr[j]>arr[j+1]) {
            var temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}

console.log(arr);

第三部分、二维数组

1.二维数组的创建

  1. 使用“[ ]”字面量来创建数组
  2. 使用“new Array()”字面量来创建数组
var arr1  = [[1,2,3],[4,5,6],[7,8,9]];    //3行3列的二维数组

var arr2 = new Array(
    new Array(1,2,3),
    new Array(4,5,6),
    new Array(7,8,9)
)

2.元素的访问

数组名[行下标][列下标]

3.二维数组转置

二维数组的转置指的是将二维数组横向元素保存为纵向元素。

var a = [
    ['a','b','c'],
    ['d','e','f'],
    ['g','h','i'],
    ['j','k','l']
]

var str = ''

for(var i=0;i<a.length;i++){

    for(var j=0;j<a[i].length;j++){
        str += a[i][j] + '\t';
    }
    str += '\n';
}

console.log("转置前:\n",str);

var res = []

for(var i=0;i<a[0].length;i++){
    
    res[i] = []

    for(var j=0;j<a.length;j++){
        res[i][j] = a[j][i];
    }
}

console.log("转置后:",res);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值