arr

插入排序

匿名 (未验证) 提交于 2019-12-02 23:44:01
package com.cisco.www.sort;/** * 插入排序 */public class InsertSort { public static void insertSort(int[] arr){ if(arr==null||arr.length<2){ return; } for(int i = 1 ; i<arr.length;i++){ for(int j = i-1;j>=0&&arr[j]>arr[j+1];j--){ swap(arr,j,j+1); } } } private static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i]=arr[j]; arr[j]=temp; }}

插入排序

匿名 (未验证) 提交于 2019-12-02 23:43:01
package com.cisco.www.sort;/** * 插入排序 */public class InsertSort { public static void insertSort(int[] arr){ if(arr==null||arr.length<2){ return; } for(int i = 1 ; i<arr.length;i++){ for(int j = i-1;j>=0&&arr[j]>arr[j+1];j--){ swap(arr,j,j+1); } } } private static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i]=arr[j]; arr[j]=temp; }}

二分(折半)查找

匿名 (未验证) 提交于 2019-12-02 23:42:01
二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 在最坏的情况下用O(log n)完成搜索任务。 java实现: public class BinarySearch { public int binarySearch ( int [] arr , int target ) { if ( arr . length == 0 || arr == null ) return - 1 ; int min = 0 ; int max = arr . length - 1 ; int mid = (( max - min )>> 1 )+ min ; while ( min <= max ) { if ( arr [ mid ]< target ) min = mid + 1 ; else if ( arr [ mid ]> target ) max = mid - 1 ; else return mid ; mid = (( max - min )>> 1 )+ min ; } return - 1 ; } } 转载请标明出处: 二分(折半)查找 文章来源: https://blog.csdn.net/QiuBika_061/article/details/91857389

真伪数组的转化及apply/call/slice方法

匿名 (未验证) 提交于 2019-12-02 23:41:02
此篇文章前半部分都在介绍真伪数组转换的涉及的相关js方法,原理。 想要直接看真伪数组转化的具体方法可以直接看文章的最后一节“总结真伪数组的转换”。 注意:文章内所有的arr均为真数组的命名,obj及res为伪数组的命名。 补充this的含义: this:谁调用就是谁 例如: function test() { console.log(this);//打印window。this是谁调用就是谁.此时this是window } test(); js的apply与call方法 apply和call方法的作用: 专门用来修改方法内部的this apply和call方法的格式: call(对象,参数1,参数2,…) apply(对象,[数组]) apply和call方法的使用案例 -1.通过window.test找到test方法 -2.通过apply方法将找的test内部的this改为自定义的对象obj function test() { console.log(this);//打印obj。this是谁调用就是谁 } var obj = {"name":"lnj" }; window.test.apply(obj);//打印 {"name":"lnj" } window.test.call(obj);//打印 {"name":"lnj" } apply和call方法的区别 以window

js 常见操作

匿名 (未验证) 提交于 2019-12-02 23:39:01
JS基本常识 typeof 返回的7个值 ‘number’/‘string’/‘boolean’/‘object’/‘function’/‘undefined’/‘symbol’ instanceof 用法, constructor js里面的函数名是函数实例的引用地址,可以作为参数和返回值, call/apply改变this,扩充作用域 ES6 新增的数据类型 Symbol 原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名 let sy = Symbol("key1"); // 写法1 let syObject = {}; syObject[sy] = "kk"; console.log(syObject); // {Symbol(key1): "kk"} // 写法2 let syObject = { [sy]: "kk" }; console.log(syObject); // {Symbol(key1): "kk"} // 写法3 let syObject = {}; Object.defineProperty(syObject, sy, {value: "kk"}); console.log(syObject); // {Symbol(key1): "kk"} 常见的用法 在 ES5 使用字符串表示常量,但是用字符串不能保证常量是独特的

js基础知识点

匿名 (未验证) 提交于 2019-12-02 23:34:01
1. 变量声明: var 变量名; J avaScript基础数据类型 包括原始类型和引用类型 原始类型有5个: Number(数值) String(字符串) Boolean(布尔) Null(空) Undefined(未定义) 引用类型有1个: Object(对象) 通过typeof(x)可以返回一个变量x的数据类型; 注意一点:typeof运算符对于null类型返回的是object 2.函数 1.函数:函数就是可以重复执行的代码块。 2.语法:function 函数(){} 3.调用:函数定义了,一定要调用 4.形参,实参,实参写在调用函数的括号里,实参写在定义函数括号里 5,返回值 return 返回值返回了要接收,接受的是调用函数。 6,Js不能重载(就是两个函数名相同,下面的函数会把上面的函数覆盖) 7.匿名函数 function(){} 没有函数名,一般要与变量或者事件结合起来使用 8.作用域:全局变量,局部变量。 局部变量只能在函数内部使用。代码执行完,定义的变量也就消失了。 全局变量可以在任何地方使用。 3.循环 ① while循环 while用于循环作用基本一致,通常用来循环数组 语法:while(条件){循环体} ②  do while循环,do while 是while的一个亲戚,它在循环开始前先执行一次操作,然后才进行判断,true就继续执行

RxJS入门之函数响应式编程

匿名 (未验证) 提交于 2019-12-02 23:30:02
1.声明式(Declarativ) //命令式编程: function double(arr) { const results = [] for (let i = 0; i < arr.length; i++){ results.push(arr[i] * 2) } return results } function addOne(arr){ const results = [] for (let i = 0; i < arr.length; i++){ results.push(arr[i] +1) } return results } //声明式: const double = arr => arr.map(item => item * 2); const addOne = arr => arr.map(item => item + 1); 2.纯函数(Pure Function) 相反的不纯函数: 改变全局变量的值。 操作浏览器的DOM。 3.数据不可变性(Immutability) 问题:javascript算不算函数式编程语言? 例如,在命令式编程环境中, a:=b+c表示将表达式的结果赋给 a,而之后改变 b 或 c的值不会影响 a。但在响应式编程中,a的值会随着 b或 c的更新而更新。 RxJS 属于“函数响应式编程”。 数据流抽象了很多现实问题。 擅长处理异步操作。

深入理解 Array.prototype.map()

大憨熊 提交于 2019-12-02 23:24:28
概述:   map()方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组,它不会改变原来的数组。    语法:   let newArr = oldArr.map(callback[, thisArg]) 参数:    callback     原数组中的元素调用该方法后返回一个新数组。它接收三个参数,分别为 currentValue、index、array。      currentValue       callback的第一个参数,数组中当前被传递的元素。      index (可选)       callback的第二个参数,数组中当前被传递的元素的索引。      array (可选)       callback的第三个参数,调用map()方法的数组,即原数组。    thisArg(可选)     执行callback函数时this指向的对象。 描述     map()方法会给原数组中的每个元素都按顺序调用一次callback函数。callback每次执行后的返回值组合起来形成一个新的数组。callback函数只会在有值的索引上被调用,那些从来没被赋过值或者使用delete删除的索引则不会被调用。     callback函数会被自动传入三个参数:数组元素、数组元素索引、原数组本身。     如果thisArg参数有值

ArrayList集合

匿名 (未验证) 提交于 2019-12-02 23:05:13
什么是集合? JDK 集合的创建步骤: import java.util.ArrayList; 创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型: 语法格式: ArrayList< > = new ArrayList< >(); 注意: <>括号中指定的数据类型元素; 8 : 基本数据类型 对应的引用数据类型表示形式 byte Byte short Short I nt Integer long Long float Float double Double char Character boolean Boolean ArrayList<String> arr = new ArrayList<String>(); // 创建字符串集合。只能存储字符串 集合中常用方法: boolean add Object obj 将指定元素 obj Object get int index 返回集合中指定位置上的元素 int size () 返回集合中的元素个数 import java.util.ArrayList; public class ArrayList_01 { public static void main(String[] args) { ArrayList<String> arr = new ArrayList<String>(); //

Numpy学习三:数组运算

匿名 (未验证) 提交于 2019-12-02 23:05:13
1、转置 # reshape (shape)函数改变数组形状,shape是一个元组,表示数组的形状 创建一个包含15个元素的一维数组,通过reshape函数调整数组形状为3行5列的二维数组 arr = np.arange(15). reshape ((3,5)) print(arr) #转置,数组转置可以使用 transpose 方法或者 T属性, 转置返回的是源数组的视图,不会进行任何复制操作 #将3行5列的二维数组arr转置为5行3列的二维数组 arr. transpose () #使用 T属性 实现转置 arr .T 2、算数运算 #注意:两个数组做算数法要求两个数组的结构要相同 #数组加法, 两个数组对应位置的元素相加 arr1 = np.array([[1,2,3],[4,5,6]]) arr2 = np.ones((2,3)) #2行3列的全1数组 arr1 + arr2 #相当于给数组arr1中的每个元素加1 #数组减法, 两个数组对应位置的元素相减 arr1 - arr2 #数组乘法, 两个数组对应位置的元素相乘 arr3 = np.array([[2,2,2],[2,2,2]]) arr1 * arr3 #使用tile函数构造数组 ,上一个arr3构造具有相同元素的数组非常麻烦,使用tile函数非常简洁 #第一个参数表示需要复制的数组