arr

小白之旅6

一曲冷凌霜 提交于 2019-11-26 17:36:06
一. 方法 1.1 方法的好处 提高代码的复用性 隐藏了功能的实现细节 1.2 方法的组成 权限(范围)修饰符 修饰方法的可见范围, 取值有:public、protected、[default]、private 特殊修饰符 使用特定的关键字能让该方法具有特殊含义的修饰符, 取值:static、final、abstract、synchronized 返回类型 表示该方法在运行完毕后会返回一个指定类型的结果给调用者 方法名 方法的名字 参数列表 定义方法时,用于明确调用者在调用时必须传入数据的数据类型和个数 调用方法时,实际传入方法参与运算的数据 方法体 方法具体执行的功能 1.3 方法的定义和调用 定义:创建方法,明确该方法的返回类型、方法名、参数列表、方法体 调用:使用方法,明确所调方法的方法名、参数列表 1.4 参数列表 形式参数:形参,在方法定义时告知调用者调用方法时需要传入数据的数据类型和个数 实际参数:实参,在方法调用时传入方法真正参与运算的数据 1.5 返回类型 表示该方法在运行完毕后会返回一个指定类型的结果给调用者 void,表示空,该方法在运行完毕后没有返回值 非void,需要明确该方法返回的结果是何种类型的,此时在方法运行完毕后需要通过return关键字把运算完的结果返回给调用者。 1.6 return关键字 返回类型为非void:用于将运算结果返回给调用者

java数组详解

故事扮演 提交于 2019-11-26 16:46:45
什么是数组? 数组就是多个有序元素的序列,用于存储多个数据类型的集合 例如 int a=1;int b=2;int c=3; 本来都是单个存储,想要使用时候非常的不方便,就将它们放在一块 ,像 int[] arr = {1,2,3}如果想要使用的时候,直接操作arr就行 数组的定义方式(3种) 动态数组 数据类型  数组名 = new 数组类型[数组元素个数] ; eg: String[] arr = new String[3] eg: int[] arr = new int[2] ; 静态数组 数组类型  数组名=new  数组类型[]{元素值1,元素值2~~,元素值n} eg :int[] arr = new int[]{1,2,3}; eg: String[] arr = new String[]{“你好啊”,“数组”}; 省略的数组 数组类型[]   数组名={元素值1,元素值2~~,元素值n}; eg: int[] arr = {1,3,4,}; 数组元素如何获取? 首先数组是一个序列,那么代表每个元素都有下标,数组下标是从0开始的 例如: int[] arr = {1,3,4,}; 那么1的下标就是0,3的下标就是1,4的下标就是2,我们就可以通过遍历的方式获取 代码示例 运行结果示例 动态数组内存执行过程(外加元素值更改的过程)? 分析:1和2

几种排序方法的实现(更新中)

空扰寡人 提交于 2019-11-26 16:16:17
插入排序: 1).直接插入排序:   假设当前排序到了第i个元素arr[i],则此时i左侧[0,i-1]已经有序,对于arr[i]来说,如果arr[i]>=arr[i-1],则不用排序,直接进入[i+1];否则要在左侧有序表中找到一个合适的位置j令arr[j]<=arr[i]<arr[j+1]。 每一趟插入排序,令当前有序表的长度增加1,直至有序长度等于数组长度。 class Solution { public: void InsertSort(vector<int>& arr){ if(arr.empty()) return; for(int i=1;i<arr.size();i++) { if(arr[i]<arr[i-1]) { int tmp=arr[i]; arr[i]=arr[i-1]; int j=i-2; for(;j>=0&&arr[j]>tmp;j--) arr[j+1]=arr[j]; arr[j+1]=tmp; } } return; } }; 2).折半插入排序:   和普通的直接插入排序相比,折半插入排序利用了左侧有序表的特性,利用折半查找减少了查询次数,但移动次数仍然未改变。 class Solution { public: void BInsertSort(vector<int>& arr){ if(arr.empty()) return; for

数组去重的方法(暂时了解的)

不想你离开。 提交于 2019-11-26 15:58:13
1、利用ES6中set去重 let arr=[1,1,2,3,4,4,5] arr=[...new Set(arr)] console.log(arr) 2、利用两个for循环嵌套,然后splice去重(ES5中最常用) 先定义一个包含原始数组第一个元素的数组,然后遍历原始数组,将原始数组中的每个元素与新数组中的每个元素进行比对, 如果不重复则添加到新数组中,最后返回新数组;因为它的时间复杂度是O(n^2),如果数组长度很大,那么将会非常耗费内存 3、利用indexOf去重1 数组内是否有该元素,有返回1,没有返回-1 数组的indexOf()方法可返回某个指定的元素在数组中首次出现的位置。该方法首先定义一个空数组res, 然后调用indexOf方法对原来的数组进行遍历判断,如果元素不在res中,则将其push进res中, 最后将res返回即可获得去重的数组 新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。 利用indexOf去重2 利用indexOf检测元素在数组中第一次出现的位置是否和元素现在的位置相等,如果不等则说明该元素是重复元素 4、利用sort 利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。 这种方法首先调用了数组的排序方法sort(),

小白之旅5

江枫思渺然 提交于 2019-11-26 15:52:30
一. 数组 概念:存储数据的容器 1. 特点 只能存储同一种数据类型 长度固定 2.创建 数据类型[] 数组名 = new 数据类型[数组长度]; 数据类型[] 数组名 = {数据1,数据2,数据3,...}; 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3,...}; 3. 获取 格式: 数组名[下标] 下标(index): 索引、脚标 下标的范围是从0开始到数组长度-1 数组长度: 数组名.length 异常: ArrayIndexOutofBoundsException:数组下标越界异常,原因下标超过了范围 NullPointerException:空指针异常,原因是数据在内存中没有实际的存储空间,就对它进行了操作 4. 赋值 格式: 数组名[下标] = 数据值; 5. 遍历 循环对数组进行查看元素或者对元素进行赋值 数据源 下标 ++、-- 对数组进行何种操作 例如: 循环打印数组中的元素 int[] arr = {1,2,3,4}; for(int i = 0;i <= arr.length - 1;i++){ System.out.println(arr[i]); } 对数组中的元素进行循环赋值 for(int i = arr.length - 1;i >= 0;i--){ arr[i] = i; } 6. 数组的默认值 根据不同的数据类型

玩转数据结构——链表和递归

橙三吉。 提交于 2019-11-26 14:54:27
递归 本质上,将原来的问题,转化为更小的同一问题 举例:数组求和 1 /* 2 3 Sum(arr[0...n-1]) = arr[0] + Sum(arr[1...n-1]) <-- 更小的同一问题 4 Sum(arr[1...n-1]) = arr[1] + Sum(arr[2...n-1]) <-- 更小的同一问题 5 6 ...... 7 Sum(arr[n-1...n-1]) = arr[n-1] + Sum(arr[]) <-- 更小的同一问题 8 9 */ 10 11 public class Sum { 12 13 public static int sum(int[] arr){ 14 return sum(arr, 0); 15 } 16 17 // 计算arr[l...n)这个区间内所有数字的和 18 private static int sum(int[] arr, int l){ 19 if(l == arr.length) 20 return 0;    // <-- 求解最基本问题     21 return arr[l] + sum(arr, l + 1);  // <-- 把原问题转化成更小的问题 22 } 23 24 public static void main(String[] args) { 25 26 int[] nums = {1, 2

多层嵌套json类型数据解析

徘徊边缘 提交于 2019-11-26 14:47:54
前段时间写了一个多层嵌套json数据对象,费了半天劲,记录一下 前端数据类似淘宝多条件搜索,json数据类型为key-value嵌套数组 前端为ajax传值 function searfunc(arr) { //arr为查询按钮之后输出的搜索条件 console.log(arr); $.ajax({ url:'/conprob/titleList', type:'post', contentType: "application/json", traditional: true, async : true, data:JSON.stringify(arr), 后台controller层用JSONArray接收数据类型   @RequestMapping(value = "titleList",produces = "application/json;charset=UTF-8") @ResponseBody public Object titleList(@RequestBody JSONArray jsonParam){ } service层进行拆分解析 for(int i = 0;i<jsonParam.size();i++){ JSONObject jsonObject=jsonParam.getJSONObject(i); String key = jsonObject

es6之Iterator

落爺英雄遲暮 提交于 2019-11-26 14:45:19
1.任何数据结构只要部署了Iterator接口(本质是一个指针对象),也就是部署了Symbol.iterator属性,便可以完成遍历操作;数组原生就具备Iterator接口,就可以用for...of遍历。由于Iterator只是把接口规格加到数据结构之上,所以,遍历器与它所遍历的那个数据结构,实际上是分开的。 2.Iterator遍历过程: - 创建一个指针对象,指向当前数据结构的起始位置; - 调用next方法,可以将指针指向数据结构的第一个成员,返回一个包含value和done属性的对象; - 继续调用next方法,......以此类推,直到指向结束位置。 // mock iterator function makeIterator(array) { var nextIndex = 0 ; return { next: function () { return nextIndex < array.length ? {value: array[nextIndex ++], done: false } : {value: undefined, done: true }; } }; } var arr = makeIterator([1, 2, 3 ]); arr.next(); // {value: 1, done: false} arr.next(); // {value: 2,

算法之排序

邮差的信 提交于 2019-11-26 14:44:10
1. 时间复杂度就是while的次数,二分查找O(h)=O(log2n) 2. 冒泡排序(O(n^2) 、稳定) 它重复地走访过要排序的数列,依次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 function bubbleSort(arr){ const len = arr.length; for (let i = 0; i < len; i++ ){ for (let j = 0; j < len - 1 - i; j++ ){ if (arr[j] > arr[j + 1 ]){ [arr[j], arr[j +1]] = [arr[j+1 ], arr[j]]; } } } return arr; } 3. 快排(O(nlogn)) 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 var quickSort = function (arr){ if (arr.length <= 1) { return arr;} const midIndex = Math.floor(arr.length / 2 ); const mid = arr

java作业——Day0011

流过昼夜 提交于 2019-11-26 13:05:32
JavaScript 编程题 去掉一组整型数组中重复的值。 比如输入:[1,13,24,11,11,14,1,2] 输出:[1,13,24,11,14,2] 需要去掉重复的 11 和 1 这两个元素。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> function unique(arr) { var ret = []; var len = arr.length; for(var i = len-1; i >= 0; i--) {            console.log("i="+i+",arr[i]="+arr[i]); for(var j = i - 1; j >= 0; j--) { if(arr[i] === arr[j]) { j = --i;                 console.log("j="+j+",arr[j]="+arr[j]); } }            console.log("push----i="+i+",arr[i]="+arr[i]); ret.push(arr[i]); } return ret.reverse(); } var arr = [1, 13, 24, 11, 11, 14, 1