arr

js 数组 数组 最大值、最小值 算法(转载)

ぃ、小莉子 提交于 2020-03-26 02:31:34
一:https://www.cnblogs.com/zhouyangla/p/8482010.html 1.排序法 首先我们给数组进行排序,可以按照从小到大的顺序来排,排序之后的数组中第一个和最后一个就是我们想要获取的最小值和最大值。 排序我们会用到数组的 sort 方法。 var arr = [12,56,25,5,82,51,22]; arr.sort(function (a, b) { return a-b; }); // [5,12,22,25,51,56] var min = arr[0]; // 5 var max = arr[arr.length - 1]; // 56 2.假设法 假设当前数组中的第一个值是最大值,然后拿这个最大值和后面的项逐一比较,如果后面的某一个值比假设的值还大,说明假设错了,我们把假设的值进行替换。最后得到的结果就是我们想要的。 // 获取最大值: var arr = [22,13,6,55,30]; var max = arr[0]; for(var i = 1; i < arr.length; i++) { var cur = arr[i]; cur > max ? max = cur : null } console.log(max); // 55 // 获取最小值: var arr = [22,13,6,55,30]; var min

python排序算法实现:

ε祈祈猫儿з 提交于 2020-03-26 01:44:08
选择排序: def sel_sort(arr): i=0; length =len(arr) while i<length: j = i+1 min = arr[i] while j<length: if arr[j]<min: min = arr[j] arr[j] = arr[i] arr[i] = min j+=1 i+=1 return arr 插入排序: def insert_sort(arr): i =1 while i <=len(arr)-1: key = arr[i]; j =i -1 i +=1 while j >=0 and arr[j]>key: arr[j+1] = arr[j] j -=1 arr[j+1] = key return arr a = insert_sort([1,2,4,3]) print(a) 归并排序: #子问题程序(对两组已排序数组进行合并排序)最小子程序数组长度为2,即p=q时 #0<=p<=q<r<=len(a), def merge(arr,p,q,r): left = arr[p:q+1] right = arr[q+1:r+1] left.append(100000)#哨兵 right.append(100000) i=0;j=0; k=r+1; while p<k: if left[i]<=right[j]:#比较

java各种排序算法及实现

不羁岁月 提交于 2020-03-26 00:18:44
3 月,跳不动了?>>> 先来看看8种排序之间的关系: 下图是各种排序的比较: 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的。如此反复循环,直到全部排好顺序。 在插入算法中,如果有一个最小的数在数组的最后面,用插入算法就会从最后一个 位置移动到第一个。 (2)实例 package cglib; public class StringNumber { public static void insertSort(int[] a) { if (a == null || a.length < 2) { return; } int length=a.length; //数组长度 int j; //当前值的位置 int i; //指向j前的位置 int key; //当前要进行插入排序的值 //从数组的第二个位置开始遍历值 for(j=1;j<length;j++){ key=a[j]; i=j-1; System.out.println(" 将i="+i); //a[i]比当前值大时,a[i]后移一位,空出i的位置,好让下一次循环的值后移 while(i>=0 && a[i]>key){ System.out.println("进 i="+i); a[i+1]

ES6 数组扩展

这一生的挚爱 提交于 2020-03-25 23:21:10
结合扩展运算符使用 function foo(a,b,c){ console.log(a,b,c); } foo(...[1,2,3]);//将数组展开,一一对应 用法: const arr=["cyy",18,["html","css"]]; function info(name,age,hobby){ console.log(`我叫${ name },我今年${ age }岁,我喜欢${ hobby.join("和") }`); } info(arr[0],arr[1],arr[2]); //使用扩展运算符 info(...arr); //使用apply达到类似效果 //1、第一个是对象,如果使用apply方法的函数中有this使用,可以指定对象,改变this的指向 //2、第二个参数是数组 info.apply(null,arr); //Math.max() 求最大值 const arr=[1,11,35,3]; //扩展运算符展开数组 console.log(Math.max(...arr)); //apply展开数组 //方法.apply(this,数组) console.log(Math.max.apply(null,arr)); 使用扩展运算符合并数组 const arr1=[1,2]; const arr2=[3,4]; //合并数组 const narr1=[11

一些实用的工具js工具方法

蹲街弑〆低调 提交于 2020-03-25 10:29:04
1.两个数组,一个是原数组,一个是经过原数组增删改后的数据,相比原数组修改后的数据具体增加,或删除了那些元素 1 let arr=[1,2,3,4,5] //原素组 2 let arr1=[9,10,6,8] //增删过后的数组 3 console.log(arr,arr1) 4 function change(arr,arr1){ 5 let add=[]; 6 let reduce=[] 7 arr1.forEach(i=>{ 8 if(arr.indexOf(i)==-1){ 9 add.push(i) 10 } 11 }) 12 arr.forEach(i=>{ 13 if(arr1.indexOf(i)==-1){ 14 reduce.push(i) 15 } 16 }) 17 return { 18 add, 19 reduce 20 } 21 } 来源: https://www.cnblogs.com/zs521/p/12563929.html

高级软件工程第二次作业

感情迁移 提交于 2020-03-24 23:57:00
1 项目 GitHub 地址 git地址: https://github.com/JEAN330/nangua 2 PSP psp Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planing 计划 10 10 ▪ Estimate ▪ 估计这个任务需要多少时间 10 10 Development 开发 600 900 ▪ Analysis ▪ 需求分析(包括学习新技术) 60 120 ▪ Design Spec ▪ 生成设计文档 20 20 ▪ Design Review ▪ 设计复审 (和同事审核设计文档) 10 10 ▪ Coding Standard ▪ 代码规范 (为目前的开发制定合适的规范) 10 10 ▪ Design ▪ 具体设计 30 45 ▪ Coding ▪ 具体编码 350 500 ▪ Coding Review ▪ 代码复审 60 100 ▪ Test ▪ 测试(自我测试,修改代码,提交修改) 60 85 Reporting 报告 130 190 ▪ Test Report ▪ 测试报告 100 150 ▪ Size Measurement ▪ 计算工作量 10 10 ▪ Postmortem & Process Improvement Plan ▪ 事后总结, 并提出过程改进计划 20 30 合计

ES6 数组的解构赋值

白昼怎懂夜的黑 提交于 2020-03-24 23:34:45
数组的解构赋值 将数组的值,或者对象的属性,提取到不同的变量中 const arr=[1,2,3,4]; let [a,b,c,d]=arr; 更复杂的匹配规则: const arr=[1,2,[3,4],[5,6,7]]; let [,b]=arr; let [,,c,d]=arr; let [,,,[,,g]]=arr; 扩展运算符: ... let arr1=[1,2]; let arr2=[3,4]; let arr3=[5,6]; let arr4=[arr1,arr2,arr3];//三个数组 let arr5=[...arr1,...arr2,...arr3];//合并数组的值 数组的解构赋值与扩展运算符结合 const arr=[1,2,3,4,5]; let [a,b,c]=arr; let[a2,b2,...c2]=arr;//取到剩下的所有值 默认值 没有匹配到的值默认为undefined const arr=[1,undefined,undefined]; let [a,b,c,d]=arr; 如果是undefined,可以在解构赋值时单独再赋值(必须是undefined) const arr=[1,undefined,undefined,null]; let [a,b=2,c=3,d=4]=arr; 交换变量 let a=10,b=20; [a,b]=[b

Java基础--二维数组

独自空忆成欢 提交于 2020-03-23 21:02:40
1.二维数组的定义 二维数组表示行列二维结构,在栈空间中的二维数组的地址指向堆空间中的一维数组,堆空间中的一维数组的地址又指向一维数组所在的内存空间。 2.二维数组的声明 二维数组声明有3种方式,推荐使用第三种命名方式。 2.1命名方式1 1 import java.util.Arrays; 2 public class Test05{ 3 public static void main(String[] args){ 4 5 // 二维数组 6 //int[] 7 // (int[]) [] 8 // 【1】声明 9 int[][] arr; 10 // 【2】初始化一个能存3个一维数组的二维数组 11 arr = new int[3][]; 12 // 【3】赋值 13 int[] arr1 = {1,3,4,5}; 14 int[] arr2 = {1,3,4}; 15 int[] arr3 = {2,1,6,4}; 16 arr[0] = arr1; 17 arr[1] = arr2; 18 arr[2] = arr3; 19 System.out.println(arr); 20 System.out.println(Arrays.toString(arr)); 21 } 22 } 2.2命名方式2(用于声明规则的二维数组) 1 import java.util

数据分析之Numpy的基本操作

拟墨画扇 提交于 2020-03-23 01:58:17
Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 1 创建 ndarray 使用np.array()创建 import numpy as np # 一维数据创建 ret = np.array([1, 2, 3]) # 二维数据创建 ret = np.array([[1, 2, 3], [4, 5, 6]]) print(ret) numpy默认ndarray的所有元素的类型是相同的 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int 使用matplotlib.pyplot获取一个numpy数组,数据来源于一张图片 import matplotlib.pylab as plt # 图片数据转化为数组 img_arr = plt.imread('./cat.jpg') # 数组转图片 img_show = plt.imshow(img_arr) # 操作该numpy数据,该操作会同步到图片中 plt.imshow(img_arr-100) 使用np的routines函数创建 np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列

排序算法

落花浮王杯 提交于 2020-03-22 10:50:37
目录 快速排序(基于交换) 特性 思想 代码 冒泡排序(交换排序) 思想: 特点: 代码: 直接插入排序(插入排序) 思想: 特点: 代码: 折半插入排序(插入排序) 思想: 特点: 代码: 希尔排序(插入排序) 思想: 特点: 代码: 简单选择排序: 思想: 特点: 代码: 堆排序 (选择排序) 思想:按照层次遍历的顺序标号映射到数组中。 特点: 代码: 归并排序 特性 思想 代码 基数排序 思想: 特点: 快速排序(基于交换) 特性 每次使一个数归位。不稳定 思想 每次partition划分数组为两部分并返回下标。随后递归地对左右序列快速排序。 代码 int Partition(int arr[],int left,int right) { int i = left; int j = right; int pivotindex = left; //基准坐标可以任意选 int pivotnum = arr[pivotindex]; //基准数 cout << "pivotnum = " << pivotnum << endl; while(i < j) //当i==j的时候,i和j的下标就是基准数的正确位置。 { while (i < j && arr[j] >= pivotnum) //先从后面往前找小于基准数 j--; arr[i] = arr[j]; //复制到前面i的位置