arr

理顺 JavaScript (11) - 数组

怎甘沉沦 提交于 2020-02-06 03:08:13
数组直接量 var arr; arr = ['AA', 'BB', 'CC']; alert(arr.toLocaleString()); //AA, BB, CC arr = [11, 22, 33]; alert(arr.toLocaleString()); //11.00, 22.00, 33.00 /* 数组元素可以是任意类型, 包括数组本身 */ arr = ['AA', 'BB', 123]; alert(arr.toLocaleString()); //AA, BB, 123.00 alert(arr[0]); //AA alert(arr[1]); //BB alert(arr[2]); //123 /* 可先站定维数, 以后赋值 */ arr = [ , , ]; arr[0] = 11; arr[1] = 22; arr[2] = 33; alert(arr.toLocaleString()); //11.00, 22.00, 33.00 /* 先给个空数组, 再指定维数 */ arr = []; alert(arr.length); //0 arr.length = 3; arr[0] = 11; arr[1] = 22; arr[2] = 33; alert(arr.toLocaleString()); //11.00, 22.00, 33.00 /* 可用

指针与数组

倖福魔咒の 提交于 2020-02-06 01:57:42
数组与指针 此处有与最早发的指针博客有很多相同处,相同处不在过多赘述 #include < stdio . h > void fun1 ( int * arr [ ] , int n ) ; int main ( ) { int a = 0 , b = 1 , c = 2 , d = 3 ; int * arr [ 4 ] ; arr [ 0 ] = & a ; arr [ 1 ] = & b ; arr [ 2 ] = & c ; arr [ 3 ] = & d ; fun1 ( arr , 4 ) ; printf ( "a=%d b=%d c=%d d=%d" , * arr [ 0 ] , * arr [ 1 ] , * arr [ 2 ] , * arr [ 3 ] ) ; return 0 ; } void fun1 ( int * arr [ ] , int n ) { for ( int i = 0 ; i < n ; i ) { * arr [ i ] = * arr [ i ] 1 ; } } 运行结果: a = 1 b = 2 c = 3 d = 4 指针数组 #include < stdio . h > int main ( ) { //指针数组是一个特殊的二维数组模型 //数组名既是数组首元素的地址 int a [ ] = { 1 , 2 , 3 } ;

排序算法

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-05 23:51:10
//冒泡排序 public class bubbleSort { public static void main(String[] args) { int[] arr = {22,54,-1,33,66,99,22,35,0,2}; System.out.println("排序前的数组:"+Arrays.toString(arr)); /* * 因为有arr.length个元素,就说明最多要进行长度-1轮比较,这一层循环是把 * 最多要进行比较的轮数框定了,而不是遍历每个相邻元素做比较,这个是内层循环做的 * 外层只管你最多要进行多少次,所以就可以利用这个条件提前跳出,从而优化效率 */ //所以循环条件也可以这样写:for(int i = 1;i<arr.length;i++) for(int i = 0;i<arr.length-1;i++){ boolean loopFlag = true;//假设都排序好了,内层循环开始前都初始化一次 //每一轮要做的比较 for(int j = 0;j<arr.length-1-i;j++) {//-i减掉的是已经排序好的 if(arr[j]>arr[j+1]) { int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; loopFlag = false;//发现没排序好,则false

数组去重

谁都会走 提交于 2020-02-05 20:17:05
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> // 目的:去掉数组中的重复项 /* var arr1 = [1,2,3,4,5,4,2,3,4,8,6,7,5,9,7,5,3,6,7,8]; //第一种方法 // 1.创建一个空数组保存去重后的新数组 var arr2 = []; // 2.循环遍历 for ( var i = 0; i < arr1.length; i++ ) { // 取出原数组arr1中每一项,用indexof判断新数组中是否存在,如果index判断的值为-1,说明新数组中没有此项,添加到新数组中,若index不为-1,说明新数组中有此项,不做任何操作 if ( arr2.indexOf(arr1[i]) === -1 ) { arr2.push(arr1[i]) } } console.log(arr2); */ // 第二种方法 //

leetcode 152. 乘积最大子序列

☆樱花仙子☆ 提交于 2020-02-05 03:49:16
解题思路: 动态规划 使用滚动数组,减少数组的开辟的空间 dp[i][0]: 数组下表从0到i 使用nums[i]的乘积最大的值 dp[i][1]: 数组下表从0到i 使用nums[i]的乘积最小的值 为什么使用最大值和最小值? 答: 因为当前元素可能为正也可能为负,如果为正,使用最大值,如果为负,使用最小值。 int x=i%2; int y=(i-1)%2; arr[x][0]=Math.max(Math.max(arr[y][0]*nums[i],arr[y][1]*nums[i]),nums[i]); arr[x][1]=Math.min(Math.min(arr[y][0]*nums[i],arr[y][1]*nums[i]),nums[i]); 代码: public static void main(String[] args) { int[] nums={2,3,-2,4}; int ans = maxProduct2(nums); System.out.println(ans); } public static int maxProduct(int[] nums) { int[][] arr=new int[nums.length][2]; arr[0][0]=nums[0]; arr[0][1]=nums[0]; int res=nums[0]; for(int

python共享内存

萝らか妹 提交于 2020-02-05 01:55:36
https://docs.python.org/zh-cn/3/library/multiprocessing.html 共享内存 可以使用 Value 或 Array 将数据存储在共享内存映射中。例如,以下代码: from multiprocessing import Process, Value, Array def f(n, a): n.value = 3.1415927 for i in range(len(a)): a[i] = -a[i] if __name__ == '__main__': num = Value('d', 0.0) arr = Array('i', range(10)) p = Process(target=f, args=(num, arr)) p.start() p.join() print(num.value) print(arr[:])    来源: https://www.cnblogs.com/kekeoutlook/p/12262304.html

Java查找算法

别来无恙 提交于 2020-02-04 20:36:54
查找算法 一、概述 顺序(线性)查找 二分查找(折半查找) 插值查找 斐波那契查找 二、线性查找 说明 : 找到元素返回下标,若没有找到则返回-1 此处找到一个满足要求的就返回 /** * @author DELL * @Date 2020/2/3 17:53 **/ public class SequenceSearch { public static void main ( String [ ] args ) { int [ ] arr = { 3 , 67 , 2 , 0 , 9 , 56 , 35 } ; int index = seqSearch ( arr , 0 ) ; if ( index == - 1 ) { System . out . println ( "没有此元素!" ) ; } else { System . out . println ( "该元素下标为:" + index ) ; } } /** * 找到一个满足要求的就返回下标,否则返回-1 * * @param arr * @param value * @return */ public static int seqSearch ( int [ ] arr , int value ) { for ( int i = 0 ; i < arr . length ; i ++ ) { if (

发一篇关于 数组名称 和 指针区别 的专题探讨

99封情书 提交于 2020-02-04 20:01:11
char p_arr[] = " p_arr : hello world " ; 声明一个数组时,编译器将根据声明所指定的元素数量为数组保留内存空间,然后再创建数组名,它的值时一个常量 ,指向这段空间的起始位置。 数组名是符号地址常量 ( 一个常量指针,这个值不能被改变 ) ,在编译时求值并存在编译器的符号表里面,其值就是个内存地址;所以可以认为程序没有给他分配空间,数组名只是代表了那个数组空间; 与指针不一样,指针指向一块空间, 同时指针本身也存储在某个空间 ;可以认为数组名存在在符号表里,符号表是编译器用的,我们管不到;p_arr和&p_arr值是一样的,本来对常量取地址是非法的,但是标准组织没有定对数组名取地址是非法还是合法,所以因编译器而异. 引用chinaunix上一个叫dump_crash会员的发言: C专家编程里解释的很好: 经典的错误:在一个文件定义了数组,却在另外一个文件声明其为指针。代码如下: /*File name: main.c*/ extern int* array; /*声明指针*/ int main(void) { array[0]=1; /*用指针访问数据*/ return 0; } /*File name: def.c*/ int array[5]={0}; /*定义的却是数组*/ 1。编译器对数组名和指针变量的处理方式

ES6笔记(6)-- Set、Map结构和Iterator迭代器

放肆的年华 提交于 2020-02-04 14:57:18
系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java、C++,连Iterator迭代器、Set集合、Map结构都出来了,不知道说什么好... 一、简单使用 1. iterator 学过C++的人应该知道这是个迭代器对象,拥有一个指针,指向数据结构中的某个成员 JS中的iterator也有类似的功能,JS内部为一些数据结构实现了iterator迭代器的接口,让我们可以方便的使用 var [a, b, ...c] = [1, 2, 3, 4]; c // [3, 4] 如上,解构赋值以及扩展运算符的便利,多亏了内部实现的默认iterator迭代器接口,可以使用其Symbol.iterator属性获得,如 var arr = [1, 2, 3]; var it = arr[Symbol.iterator](); it.next() // {done: false, value: 1} it.next() // {done: false, value: 2} it.next() // {done: false, value: 3} it.next() // {done: true, value: undefined} 上述的iterator接口表现形式过于隐秘,在generator生成器函数中,我们可以看看比较显示的iterator接口调用: function

ES5基础

拥有回忆 提交于 2020-02-04 05:37:43
作用域链:先在最小环境内查找有无想要的变量对象,如果有则使用本函数环境内的变量对象(要是在申明变量对象前调用则是undefind),如果没有则到更大一级的环境中查找,一直延续到全局环境。 引用类型 1.Object 对象 : var person = { } ; // 与 new object() 相同。 for-in:枚举对象“键名”,但是无序的。 2.Array 数组 : var names=[ ];//创建一个新的数组 数组的每一项可以保存任何数据类型的数据 .join():只接受一个参数,这个参数将作为该数组每个元素之间的分隔符,返回包含所有数组项的字符串。(不会改变原数组) var arr = [ 1 , 2 , 3 ] arr . join ( ) // "1,2,3" 如果不含参数,默认为逗号。 arr . join ( "_" ) // "1_2_3" 栈方法 1.push():入栈,可以接收任意数量的参数,把它们逐个添加到数组末尾(栈顶),返回修改后的数组长度。 2.pop():出栈。从数组末尾(栈顶)移除最后一项,减少数组的length,返回移除的项。 队列方法 1.shift():出队。移除数组的第一项并返回该项,长度减1。 2.unshift():数组头部添加任意个项,并返回新数组的长度。 排序 1.reverse():反转数组中元素的顺序。( 会改变原数组