所谓数组, 就是将多个元素 (一般是同一类型),按必定顺序排列放到一个集合中 , 那么这个多个元素的集合咱们就称之为数组算法
思考 :数组
// 为何要有数组?
//1. 咱们知道,,一个变量可以存储一个值, 当咱们想要存储多个值的时候, 就可使用数组。好比存储一个班级里面全部学生的名字;
//2. 使用数组能够对多个相同类型的值统一的管理,,存储起来方便,,操做的时候,也会很方便;
复制代码
特色 : 有顺序,有长度;函数
用途 : 存储大量的数据学习
总结 :ui
数组 : 多个元素的集合,,这个集合有顺序,有长度。用途是存储大量的数据.spa
在js里,数组是一个有序的列表,,能够在数组中存听任意的数据code
初体验 :排序
var arr = ['why','lisa','love'];
// 总结 :
//1. 变量 : numbder->num1 string-str1, boolean->b1 flag array->arr1
//2. [] , 用[] 来表明数组 => () 小圆 [] 中方 {} 大花
//3. 数组里的每个值,称之为元素
//4. 类型能够不同,,可是最好同样
//5. 逗号
//4. 数组是有长度的 length
//5. 下标决定了数组的顺序
// 下标的用法?
// 6. 获取元素 数组[下标]
var arr = ['why','lisa','love'];
console.log(arr);
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
复制代码
经过 构造函数 建立数组ci
var arr = new Array();//建立了一个空数组
var arr = new Array(1,2,3,4);//建立了一个数组,里面存放了4个数字
var arr = new Array(4);//建立了一个数组,长度为4,里面全是空值
复制代码
经过 数组字面量 建立数组字符串
var arr1 = []; //建立一个空数组
var arr2 = [1, 2 , 3, 4]; //建立一个包含4个数值的数组,多个数组项以逗号隔开
var arr3 = [4]; // 建立一个数组,元素只有1个,,,元素是4
复制代码
数组的长度 : 跟字符串同样,,,数组有一个length 属性,, 指数组中存放的元素的个数 ;
var str1 = 'abc';
console.log(str1.length);
var arr = [1,3,5,8];
console.log(arr.length);
复制代码
数组的下标 : 由于数组有序的,有序的就应该有本身的序号,,而这个序号就是每一个元素对应的下标, 下标从0 开始 , 到 arr.length-1 结束
var arr = ['why','lisa','love'];
arr[0];//下标0对应的值是why
arr[2];//下标2对应的值是love
var arr = ['why','lisa','love'];
// 0 1 2
// 下标 : 0 开始 arr.length-1 结束 长度:3 arr.length
复制代码
数组的取值
//格式:数组名[下标]
//功能: 获取数组下标对应的那个值,若是下标不存在,则返回undefined。
// 下标范围 : 0 ~ arr.length-1
var arr = ["red", "green", "blue"];
//
打印 : arr[0];//red
打印 : arr[2];//blue
打印 : arr[3];//这个数组的最大下标为2,所以返回undefined
复制代码
数组的赋值
//格式:数组名[下标] = 值;
//若是下标有对应的值,会把原来的值覆盖,
var arr = ["red", "green", "blue"];
arr[0] = "yellow";//把red替换成了yellow
// 若是下标不存在,会给数组新增一个元素。
arr[3] = "pink";//给数组新增长了一个pink的值
// 若是下标有跨度,,中间全是empty 不合法
// 特殊 : arr[arr.length] = 值
arr[arr.length] = '哈';
arr[arr.length] = '你妹';
复制代码
思考 : 如何给一个数组添加新的元素???? [重要]
遍历 : 对数组的每个元素都访问一次就叫遍历
数组遍历的基本语法:
// 传统遍历
arr[0];
arr[1]
// for遍历 1-100 的演变
// 下标 : 0 arr.length-1
//
for(var i =0; i < arr.length; i++) {
//数组遍历的固定结构
}
复制代码
声明:咱们今天主要是学习数组遍历的语法,对于这种数学烧脑类的题目,想不到是很正常的 ,
//1. 介绍什么冒泡排序?
思考1 : i < arr.length 是遍历几回 i < arr.length-1 是遍历几回
思考2 : 交换两个变量
思考3 :数组中的最大值放到最后 var arr = [5, 4, 3, 2, 1];
//2. 冒泡排序算法的运做以下:
//比较相邻的元素。若是第一个比第二个大,就交换他们两个。
//对每一对相邻元素做一样的工做,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
//针对全部的元素重复以上的步骤,除了最后一个。
//持续每次对愈来愈少的元素重复上面的步骤,直到没有任何一对数字须要比较。 [1]
复制代码
5 4 3 2 1
1,2,3,5,4
var isJiaoHuan = '没有交换';
//思路:判断,若是一趟下来,一次交换都没有作,说明就已经排好序,就不须要继续比
//var arr = [65, 97, 76, 13, 27, 49, 58];
var arr = [1, 2, 3, 4, 5, 6, 7];
var tang = 0;
var ci = 0;
for (var i = 0; i < arr.length - 1; i++) {
tang++;
var count = 0;//记录交换的次数
//思路: 两两比较,若是前面的大于后面的,交换位置
for (var j = 0; j < arr.length - 1 - i; j++) {
ci++;
if (arr[j] > arr[j + 1]) {
count++;
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
console.log(count);
if (count == 0) {
//说明,没有进行交换
break;
}
}
console.log(arr);
console.log(tang, ci);
复制代码