数组基本方法 与冒泡排序和选择排序
-
冒泡排序
- 就是让是让数组中的连续的两个元素进行比较 数值大的和数值小的进行交换 直到完成数组排列
例
-
var a = [5, 2, 3, 4, 1, 6, 9, 7, 15] // 随便定义的数组 for (var i = 0; i < a.length; i++) { //外层循环的次数主要由数组的长度决定 因为你外层循环一次 可以找到一个最大值(相对某轮) 最后一次可以不比较 因为最后一个元素只能在最后剩下的位置里面 for (var s = 0; s < a.length; s++) { if (a[s] > a[s + 1]) { var flag = a[s]; a[s] = a[s + 1]; a[s + 1] = flag; } } } } console.log(a)//这时 已经完成排序 //优化1 for (var i = 0; i < a.length - 1; i++) { for (var s = 0; s < a.length; s++) { if (a[s] > a[s + 1]) { //外层循环没执行一轮 就可以得到一个最大值 也就是说该元素的位置是可以确定的 也就是说位置确定的元素 可以不参与后续的比较 因此可以得到优化2 var flag = a[s]; a[s] = a[s + 1]; a[s + 1] = flag; } } } } console.log(a) // 结果与上面代码一致 //优化2 for (var i = 0; i < a.length; i++) { for (var s = 0; s < a.length -1 - k; s++) {//每排一次 就确定一个位置 后续循环不需要继续作比较 if (a[s] > a[s + 1]) { var flag = a[s]; a[s] = a[s + 1]; a[s + 1] = flag; } } } } console.log(a)
-
- 就是让是让数组中的连续的两个元素进行比较 数值大的和数值小的进行交换 直到完成数组排列
例
-
选择排序 *
-
for (var i = 0; i < a.length - 1; i++) { var min = i;//每次 循环改变min的值 min 为我们要排列的顺序 也就是假设的最小值所在的位置 for (var k = i + 1; k < a.length; k++) {// 因为当k = i的时候 它们表示同一个位置 也就是没意义的比较 --- if (a1[k] < a1[min]) { min = k; //而内循环执行一轮 可以得到数组内的一个切实的最小值 此时 把该元素的位置保存 } } //内层循环结束一轮 min都会保存一个最小值的位置 //我们只需要把它和假设的最小值所在的位置做交换 就可以在该位置得到一个最小值 var sss = a1[i]; a1[i] = a1[min]; a1[min] = sss; } return a1 } console.log(a)
-
数组常用方法
以下方法为会改变原数组
-
push() 语法 数组.push() 属性 在数组最后一个位置插入一个数据 该方法会改变原数组 返回改变后数组的长度
-
pop() 属性 删除数组的最后一个元素 该方法也会改变原数组、 返回数组长度
-
unshift() 属性 在数组的第0个位置上添加一个数据 或者多个元素 甚至一个数组 但是添加数组的时候 该方法是吧数组的值添加到原数组内 该方法会改变原数组 放回数组长度
-
shift()方法 删除数组第一个位置 的元素并返回改变后数组的长度
-
reverse()方法 属性 将原数组变成倒序 原数组改变
-
splice() 属性 向数组中添加,或从数组删除,或替换数组中的元素,然后返回被删除/替换的元素。 参数 splice(start,num,data1,data2,…); 所有参数全部可选。第一个参数是小标,第二个是删除的长度,第一个参数可以为负数 splice(star, 长度) 规定从某一个位置开始删除 某一长度的数据
-
sort()方法 将原数组排序 可以接收参数 不接参数的时候按UniCode编码排序 原数组改变 接收参数为函数 函数可以有两个参数fn(a, b) 若返回值为a - b 则原数组为从小到大若是 b - a 原数组将按照从大到小的顺序排列
以下为不会改变原数组的 数组方法
- slice; concat; join; indexOf; lastIndexOf
- concat() 属性 合并数组 并放回合并后的新数组 该方法对多个数组有效 该方法不会改变原数组
- join() 属性 将数组转换为字符串返回 并用指定的符号分隔 join('分隔符') 没有规定符号的情况下 默认使用逗号作为分隔符
- slice() 对数组截取并返回截取部分(开始截取的位置,结束的位置) 可从已有的数组中返回选定的元素。该方法接收两个参数slice(start,end),strat为必选
- indexOf() 属性 根据指定的数据,从左向右,查询在数组中出现的位置,如果不存在指定的数据,返回-1,找到了指定的数据返回该数据的索引
- lastIndexOf 属性 根据指定的数据,从右向左,lastIndexOf() 方法可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。如果不存在指定的数据,返回-1,找到了指定的数据返回该数据的索引