数组,冒泡排序

数组

所谓数组,就是将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。

数组:多个元素的集合,这个集合有顺序,有长度。用途是存储大量的数据。

数组的构成

在javascript数组是一个有序的列表,可以在数组中存放任意的数据

创建数组,通过数组的构造函数可以创建一个数组

1
var arr = new Array();//new表示新的 Array:表示数组  new Array表示创建一个数组。

通过数组的下标可以操作数组

1
2
3
4
5
//给数组设置值,数组中可以存放任意的值
//数组名[下标] = "值"
arr[0] = "张三";//在下标0的地方存放张三
arr[1] = 111; //在下标1的地方存放111
arr[2] = true; //在下标2的地方存放true
1
2
3
//获取数组中的值
//数组名[下标]
console.log(arr[0]);//打印下标0的值

创建数组

通过构造函数创建数组

1
2
3
var arr = new Array();//创建了一个空数组
var arr = new Array("zs","ls","ww");//创建了一个数组,里面存放了3个字符串
var arr = new Array(1,2,3,4);//创建了一个数组,里面存放了4个数字

通过数组字面量创建数组

1
2
3
var arr1 = []; //创建一个空数组
var arr2 = [1, 3, 4]; //创建一个包含3个数值的数组,多个数组项以逗号隔开
var arr3 = ["a", "c"]; // 创建一个包含2个字符串的数组

数组的下标与长度

数组的下标:数组是有序的,数组中的每一个元素都对应了一个下标,下标是从0开始的

1
var arr = ["zs", "ls", "ww"];

数组的长度:跟字符串一样,数组有一个length属性,指数组中存放的元素的个数。

1
2
3
var arr = ["zs", "ls", "ww"];
arr.length;//这个数组的长度是3
//空数组的长度是0

下标与长度的关系:最大的下标 = length - 1

数组的赋值与取值

数组的取值

1
2
3
4
5
6
//格式:数组名[下标]
//功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。
var arr = ["red", "green", "blue"];
arr[0];//red
arr[2];//blue
arr[3];//这个数组的最大下标为2,因此返回undefined

数组的赋值

1
2
3
4
5
//格式:数组名[下标] = 值;
//如果下标有对应的值,会把原来的值覆盖,如果下标不存在,会给数组新增一个元素。
var arr = ["red", "green", "blue"];
arr[0] = "yellow";//把red替换成了yellow
arr[3] = "pink";//给数组新增加了一个pink的值

思考:如何给一个数组增加新的元素?

  • arr[arr.length] = 值
  • arr.push(值)

数组的遍历

遍历:遍及所有,对数组的每一个元素都访问一次就叫遍历。

数组遍历的基本语法:

1
2
3
for(var i =0; i < arr.length; i++) {
//数组遍历的固定结构
}

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 判断,如果一趟下来,一次交换都没有做,说明就已经排好序,就不需要继续比
// var arr = [1, 2, 3, 4, 5, 6, 7];
var arr = [65, 97, 76, 13, 27, 49, 58];

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);