arr

JavaScript 数组的方法总结

淺唱寂寞╮ 提交于 2020-02-13 07:43:34
数组方法大全 (一)检测方法 检测一个对象是否为一个数组 ① instanceof 操作符 let arr = [] arr instanceof Array // true ② Array.isArray( ) let arr = [] Array.isArray(arr) // true IE9以下不支持该方法 (二)转换方法 ① toString( ) 返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串 var arr = [1,2,3,4]; console.log(arr.toString()); // '1,2,3,4' ② join( ) 将数组转换为字符串,默认情况下与toString()的结果一致,不一样的是join()方法可以指定具体的分隔符,分隔符作为方法的实参以字符串形式传入。 ③ valueOf( ) 返回原数组 (三)栈方法 ① push( ) 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度, 该方法会改变原数组。 ② pop( ) 从数组末尾删除一个元素,返回被删除的元素, 该方法会改变原数组。 (四)队列方法 ① shift( ) 删除数组的第一个元素,并将该元素返回, 该方法会改变原数组。 ② unshift( ) 在数组开头添加一个或多个元素,并返回新数组的长度, 该方法会改变原数组。 (五)重排序方法 ①

自学Java第四章——《数组》

老子叫甜甜 提交于 2020-02-12 20:47:02
4.1 数组的相关概念和名词(了解) 1、数组(array): 一组具有相同数据类型的数据的按照一定顺序排列的集合。 把有限的几个相同类型的变量使用一个名称来进行统一管理。 2、数组名: (1)这个数组名,代表的是一组数 (2)这个数组名中存储的整个数组的“首地址” 3、下标(index): 我们使用编号、索引、下标来区别表示一组数当中某一个。 范围:[0,数组长度-1] 例如:for(int i = 0; i<arr.length; i++){} 4、元素(element): 这一组中的的每一个数据都是元素。 如何表示数组元素? 数组名[下标] 5、数组的长度(length) 数组中元素的总个数。 如何获取数组长度? 数组名.length 注意:名称是为了沟通的方便,概念不用一字不落背下来 4.2 数组的相关语法 4.2.1 数组的声明 语法格式: //推荐元素的数据类型[] 数组名;​ //也对,但是不推荐元素的数据类型 数组名[]; 示例: //要存储一组整数int[] array;​//要存储一组单字符char[] array;​//要存储一组字符串String[] array; 4.2.2 数组的初始化 初始化的目的:(1)确定数组的长度(2)为元素赋值 两种初始化方式: 1、动态初始化 语法格式: //指定数组长度数组名 = new 元素的数据类型[长度];​/

关于JavaScript的数组随机排序

烈酒焚心 提交于 2020-02-12 05:37:26
昨天了解了一下Fisher–Yates shuffle费雪耶兹随机置乱算法,现在再来看看下面这个曾经网上常见的一个写法: function shuffle(arr) { arr.sort(function () { return Math.random() - 0.5; }); } 或者使用更简洁的 ES6 的写法: function shuffle(arr) { arr.sort(() => Math.random() - 0.5); } 但是这种写法是有问题的,它并不能真正地随机打乱数组。 问题 看下面的代码,我们生成一个长度为 10 的数组['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'],使用上面的方法将数组乱序,执行多次后,会发现每个元素仍然有很大机率在它原来的位置附近出现。 let n = 10000; let count = (new Array(10)).fill(0); for (let i = 0; i < n; i ++) { let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']; arr.sort(() => Math.random() - 0.5); count[arr.indexOf('a')]++; } console.log

8大排序算法总结 JS 实现

大兔子大兔子 提交于 2020-02-12 03:50:14
//bubble sort ? 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 30 function bubbleSort(arr,comp){ for (var i = 0 ;i < arr.length; i++){ for (var j = 0 ; j < arr.length - i - 1 ; j++){ if (comp(arr[j],arr[j+ 1 ])){ exch(arr,j,j+ 1 ); } } } } function exch(a,i,j){ var tmp = a[i]; a[i] = a[j]; a[j] = tmp; } var input = new Array( 5 , 1 , 4 , 2 , 3 ); bubbleSort(input,function(a,b){ return a > b;}); console.log(input); input = new Array( 5 , 1 , 4 , 2 , 3 ); bubbleSort(input,function(a,b){ return a < b;}); console.log(input); //selection sort ? 1 2 3 4 5 6 7 8 9 10 11

Javascript -- 数组迭代方法学习

六眼飞鱼酱① 提交于 2020-02-12 00:26:54
一、数组迭代方法 1、forEach 调用 arr.forEach((value, index) => { console.log(value, index) }) forEach 是循环遍历一遍数组的每一项,这个是没有返回值的,这个方法里面有个回调函数,回调函数有两个参数,第一个是数组每一项的值 value ,第二个参数是数组每一项对应的下标索引 index Tips 这个 forEahc 循环遍历和JQuery的 $.each() 方法是类似的,只不过需要注意的是$.each方法里面的回调函数的两个参数跟 forEach 方法是相反的,第一个参数是数组每一项的下标索引 index ,第二个参数才是数组每一项 的值 value 2、every 方法参考文献 调用 const boolean = arr.every((value, index, arr) => { return value==2 }) 这个数组方式有点类似短路运算 && ,可以当作是一个数组验真的方法,这个方法里面有个回调函数,这个回调函数有三个参数,第一个是测试的数组每一项,第二个是测试数组项的下标索引,第三个是测试的原数组 测试数组的每一项都会执行 every() 方法里面的回调函数,这个函数是用来校验数组的每一项是否满足指定条件,数组每一项都会执行一次回调函数,如果数组里面的所有项都满足指定条件,则返回

科学计算工具NumPy(2):ndarray的矩阵处理

二次信任 提交于 2020-02-12 00:17:33
科学计算工具NumPy(1):ndarray的创建于数据类型 科学计算工具NumPy(2):ndarray的矩阵处理 科学计算工具NumPy(3):ndarray的元素处理 ndarray的矩阵运算 数组是编程中的概念,矩阵、矢量是数学概念。 在计算机编程中,矩阵可以用数组形式定义,矢量可以用结构定义! 1. 矢量运算:相同大小的数组间运算应用在元素上 # 矢量与矢量运算 arr = np.array([[1, 2, 3], [4, 5, 6]]) print("元素相乘:") print(arr * arr) print("矩阵相加:") print(arr + arr) 运行结果: 元素相乘: [[ 1 4 9] [16 25 36]] 矩阵相加: [[ 2 4 6] [ 8 10 12]] 2. 矢量和标量运算:"广播" - 将标量"广播"到各个元素 # 矢量与标量运算 print(1. / arr) print(2. * arr) 运行结果: [[ 1. 0.5 0.33333333] [ 0.25 0.2 0.16666667]] [[ 2. 4. 6.] [ 8. 10. 12.]] ndarray的索引与切片 1. 一维数组的索引与切片 与Python的列表索引功能相似 # 一维数组 arr1 = np.arange(10) print(arr1) print

堆排序

笑着哭i 提交于 2020-02-11 15:19:40
堆排序属于不稳定排序,时间复杂度为O(nlogn),是利用堆这种数据结构设计的排序算法,是一种选择排序 堆是一个近似完全二叉树的结构,每个节点值都大于或等于左右节点为大顶堆,小于等于为小顶堆 升序排序大顶堆,降序排序小顶堆 思想和方法:将原始数据构 n 造成大顶堆,此时最大值为根节点,然后与末尾的原始数据交换,最后即为最大值,然后剩下的 n - 1 个数据继续构建大顶堆,重复上面的步骤,最后一个数直接置于第一位,至此升序排序完成 import java.util.Arrays; public class HeapSort { public static void main(String[] args) { int arr[] = {4, 6, 8, 5, 9}; heapSort(arr); } public static void heapSort(int[] arr) { int temp; for (int i = arr.length / 2 - 1; i >= 0; i--) { adjustHeap(arr, i, arr.length); } for (int j = arr.length - 1; j > 0; j--) { temp = arr[j]; arr[j] = arr[0]; arr[0] = temp; adjustHeap(arr, 0, j); }

希尔排序用插入实现

醉酒当歌 提交于 2020-02-11 12:06:48
在数据为8万的时候与插入排序速度差不多。在80万的时候明显拉开差距代码如下 package a; import java.util.Arrays; public class InsetShell { public static void main(String[] args) { // int var = 8; int var = 800000; int [] arr = new int[var]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random()*80000000); } long sta = System.currentTimeMillis(); for (int gap = arr.length/2; gap>0; gap/=2) {//这个就是希尔排序的思路,一直2 知道最后 是1 for (int i =gap ; i < arr.length; i++) {//这个是用于次数,每一次找到一个,所以也就是少了gap次 int index = i; int value = arr[index];//这个就是用于记录当前变量 上边是索引 while (index-gap>=0&&arr[index] < arr[index - gap]) {//前边为什么要用-gap,是为了数据下标 arr

java的数组

百般思念 提交于 2020-02-11 06:36:43
数组的定义: 概念:同一种类型的集合,其实数组是一个容器。 数组的好处: 可以自动给数组中的元素从0开始编号,方便操作这些元素。 一维数组 格式1: 元素类型 [ ] 数组名 = new 元素类型(元素个数或数组长度); eg: int [ ] arr = new int [5]; 格式2: 元素类型 [ ] 数组名 = new 元素类型[] (元素1,元素2,。。。。); eg: int [ ] arr = new int [ ] (35,7); int[ ] arr = {3,5,17}; 二维数组 二维数组需要用到多维数组,多维数组可以简单地理解为在数组中嵌套数组。 格式1:int[][] arr = new int[3][4]; 上面的代码相当于定义了一个3*4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组 格式2:int[][] arr = new int[3][]; 第二种方式和第一种类似,只是数组中每个元素的长度不确定 格式3:int[][] arr = {{1,2},{3,4,5,6},{7,8,9}}; 二维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9} 数组使用的前提 1.存入数组:前提:有剩余的长度 录入5个学生的成绩,求平均值 public class ArrayDemo {

数据分析(一)

半腔热情 提交于 2020-02-11 06:29:59
学习python要有面向数组/多维数组的编程思维 numpy好的地方就在于可以进行数组层面的操作,不用循环去处理数组中的每一个元素,这叫做矢量化,以上用的函数基本都要在前面加上np. ndarray里面是同一种类型的数据 切片的赋值会影响到源数据 如果只是复制一份切片,需要用到copy() type(arr)是看arr的整个类型 arr.dtype是看arr中元素的数据类型 如何改变数据类型用astype 但是是产生一个新的数组,原数组类型不变 将元组列表等序列数组转换为ndarray用asarray 但是是创建了一个新的数组,原arr没有变 两种取值方式是等价的 以整数数组来取出对应数组 若传入多个整数数组,返回的是索引元组,注意是元组 本应该是一个3x3的矩阵才对,要想取得矩阵需要这样 还可以用np.ix_函数 用.T取得数组的转置 还可以通过transpose函数来转换轴来实现数组的转置 其中参数是变换后轴位置的元组,(1,0)表示,把原来的0轴和1轴对换 swapaxes函数是用来交换轴的,只能传入两个参数,意味着这个函数只能交换两个2轴 通用函数(ufunc):快速元素级数组函数 从字面上理解就是进行元素级别的函数,如sqrt、exp、maximum等 可以用来划分整数和小数的函数modf,返回的是两个数组 《利用python进行数据分析