数组

排序算法

落花浮王杯 提交于 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的位置

element-ui带输入建议的input框踩坑

你说的曾经没有我的故事 提交于 2020-03-22 08:39:08
踩坑问题描述: 问题一: 获取到后端返回的数组,并将数组传入作为 results 传入 callback 后,焦点放在 输入框 上的时候,并未出现任何内容,只出现了一个不完整的空白框。 问题解决方案: 这个问题开始我以为是传进 callback 的 data 格式不对。Element官网上是这么写的: 我传入的是对象数组,是没问题的。 后来我仔细阅读了 Elemen t带建议查询输入框的 Demo 代码并查阅相关资料发现,输入建议列表的数据只来源于 data:[] 中的 value 字段!!! 于是,我将后端传回的 response 处理了,将 response 中需要展示的字段组成 {value:'输入建议'} 这种格式,问题解决。 searchAppNodeApi(searchQuery).then(response => { this.loadAll = response.data this.devEuiArr = []; for (let item of this.loadAll) { this.devEuiArr.push({"value1": item.dev_eui}) } }) searchAppNodeApi() 是我请求后端的api方法,拿到请求成功的回调函数的 response 参数。但是, response 里面包含很多我不需要的字段,我只需要其中的 dev

JSON使用

时间秒杀一切 提交于 2020-03-22 05:15:31
JSON:JavaScript 对象表示法( J ava S cript O bject N otation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。 每一章中用到的实例 { "employees": [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" } ] } 这个 employee 对象是包含 3 个员工记录(对象)的数组。 什么是 JSON ? JSON 指的是 JavaScript 对象表示法( J ava S cript O bject N otation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更易理解 * JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 JSON - 转换为 JavaScript 对象 JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。 由于这种相似性,无需解析器,JavaScript

返回二维数组最大联通子数组的和

那年仲夏 提交于 2020-03-22 04:43:47
题目:返回二维数组最大联通子数组的和 设计思路:首先,利用文件读入读出流,读取二维数组,再利用降维的思想,求每一行的最大子数组块,遍历所有行,再将各行的最大子数组块进行判断合并。 代码: #include<iostream> #include<fstream> using namespace std; # define N 100 int zuida(long long int n, long long int a[], long long int *p, long long int *q)//一维数组的最大子数组和 { long long int b[N] = { 0 }; long long int i, sum1 = 0, max1 = 0; for (i = 0; i<n; i++) { if (sum1<0) { sum1 = a[i]; } else { sum1 = sum1 + a[i]; } b[i] = sum1; } max1 = b[0]; for (i = 0; i<n; i++) { if (max1<b[i]) { max1 = b[i]; *q = i; //记录最大子数组的终点位置 } } for (i = *q; i >= 0; i--) { if (b[i] == a[i]) { *p = i;//记录最大子数组的起点 break; } }

LeetCode.944-删除列保证排序(Delete Columns to Make Sorted)

﹥>﹥吖頭↗ 提交于 2020-03-22 04:12:13
这是悦乐书的第 362 次更新,第 389 篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第224题(顺位题号是944)。我们给出了一个N个小写字母串的数组A,它们的长度都相同。 现在,我们可以选择任何一组删除索引,对于每个字符串,我们删除这些索引中的所有字符。 例如,如果我们有一个数组 A = [“abcdef”,“uvwxyz”] 和删除索引 {0,2,3} ,那么删除后的数组变成了 [“bef”,“vyz”] ,纵向上看,每一列是 [“b”,“v”] , [“e”,“y”] 和 [“f”,“z”] 。(形式上,第c列是 [A[0][c] , A[1][c] ,..., A[A.length-1][c]] 。) 假设我们选择了一组删除索引 D ,使得在删除之后,A中的每个剩余列都处于递增排序顺序。返回 D.length 的最小可能值。例如: 输入:[“cba”,“daf”,“ghi”] 输出:1 说明:在选择 D = {1} 之后,每列 [“c”,“d”,“g”] 和 [“a”,“f”,“i”] 处于递增的排序顺序。如果我们选择 D = {} ,则列 [“b”,“a”,“h”] 将不是递增排序顺序。 输入:[“a”,“b”] 输出:0 说明:D = {} 输入:[“zyx”,“wvu”,“tsr”] 输出:3 说明:D = {0,1,2} 注意 :

前端笔试、面试题 - JS

心已入冬 提交于 2020-03-22 02:12:28
1、数组扁平化(数组降维) 数组扁平化是指将一个多维数组变为一维数组 [1, [2, 3, [4, 5]]]  ------>  [1, 2, 3, 4, 5] 2、给定一个数组,将数组中的所有0移动到末尾,并保持非0元素的顺序不改变。如 [0,1,0,3,12] 移动后的期望数组为 [1,3,12,0,0] 要求:1、不能创建新的数组来做操作    2、尽量少的操作次数 3、写出下列两行代码处理后的返回数据 ['1','2','3'].map(parseInt); ['1','2','3'].filter(parseInt); 来源: https://www.cnblogs.com/donghuang/p/12542511.html

JavaScript设计模式与开发实践---读书笔记(2) this、call和apply

安稳与你 提交于 2020-03-21 23:33:30
this、call和apply this的指向: this总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。 1.作为对象的方法被调用 当函数作为对象的方法被调用时,this指向该对象 2.作为普通函数调用 此时的this总是指向全局对象。在浏览器的JavaScript里,这个全局对象是window对象。 有时候,我们希望div节点事件函数内部的this指向该div节点,可以用一个变量保存div节点的引用: var that = this; 在ES5的严格模式下,这种情况下的this已被规定为不会指向全局对象,而是undefined 3.构造器调用 构造器的外表跟普通函数一模一样,它们的区别在于被调用的方式。当用new运算符调用运算符时,该函数总会返回一个对象,通常情况下,构造器里的this就指向返回的这个对象。 注意:使用new调用构造器时,还要注意一个问题,如果构造器显式地返回了一个object类型的对象,那么此次运算结果最终会返回这个对象,而不是我们之前期待的this。 4.Function.prototype.call或Function.prototype.apply调用 用Function.prototype.call或Function.prototype.apply可以动态的改变传入函数的this。 丢失的this

第一部分:趣味算法入门;第八题:冒泡排序(并与选择排序对比)

谁都会走 提交于 2020-03-21 23:05:32
100个不同类型的python语言趣味编程题 在求解的过程中培养编程兴趣,拓展编程思维,提高编程能力。 第一部分:趣味算法入门;第八题: 8.冒泡排序:对N个整数(数据由键盘输入)进行升序排序 冒泡排序的思想:首先从表头开始往后扫描数组,在扫描的过程中逐对比较相邻的俩个元素的大小。若相邻的两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序,在扫描的过程中不断的将两相邻元素中的大者往后移动,最后就将数组中的最大者换到了表的最后,然后在剩下的数组元素中(n-1)个元素重复上面的过程,将次小元素放到倒数第二个位置。不断重复以上过程,直到剩下的数组元素为0为止,此时数组就变成了有序。 常用的排序方法有:冒泡排序、选择排序、插入排序、快速排序和堆排序等。 我定义了冒泡排序和选择排序的函数,以比较两者排序方法的不同之处,其他排序方法还请自测。 #解题方法示例如下; def Maopao(list): #冒泡排序函数 for i in range(1,len(list)): for j in range(len(list)-i): if list[j] > list[j+1]: list[j],list[j+1] = list[j+1],list[j] return list def Xuanze(list): #选择排序函数 for i in range(len(list

JS--排序之快排和归并

时光总嘲笑我的痴心妄想 提交于 2020-03-21 22:24:46
目录 JS排序算法之快排和归并 快速排序 归并排序 JS排序算法之快排和归并 快速排序 原理: 选择一个key(一般是第一个元素), 将数组划分为两个区域. 左边全部区域小于等于key, 右边全部大于key. 然后在通过这种方法将每个区域划分为两个区域. 整个过程可以递归实现,以此实现整个数据有序 时间复杂度: O(n*log(n)) 最坏时间复杂度: O(n^2) 最坏情况: 原数组是升序(降序), 需要排成降序(升序) 不稳定的排序 特性: 数组分块,且左边区域小于右边(升序) 不稳定原因: 元素交换是跨元素直接交换, 相邻相同元素可能发生位置交换 性能: 最好的的快速排序方法 示例过程: function quickSort(ary) { let n = ary.length; function sort(ary, start, end) { if(end <= start) return; let i = start, j = end, key = ary[start]; // 设置第一个元素为key while(true) { // 从左向右找到大于key的元素位置(大于key循环停止, i就是该元素位置) while(ary[++i] < key) { // 到达末尾退出循环 if(i === end) break; } // 从右向左找到小于key的元素位置

2018.6.13 Java语言基础复习总结

点点圈 提交于 2020-03-21 20:03:17
Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合。机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计算机执行。 1.2汇编语言 负责把汇编语言翻译成二进制的机器语言,这种翻译程序就是汇编程序。 1.3高级语言 1954年第一个完全脱离机器硬件的高级语言FORTRAN诞生 1.3.1C语言 是一种计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点。 1.3.2 C++语言 是具有面向对象特性的C语言,面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。通过面向对象的方式,将现实世界的事物抽象成类和对象,帮助我们实现对现实世界的抽象与建模。 1.3.3 C#语言 是一种面向对象的运行于.NET Framework之上的高级程序设计语言。C#与Java很相似(单一继承、接口、编译成中间代码在运行) 1.4 SQL语言 结构化查询语言(Structured Query Language,SQL)是一种数据库查询和编程的语言。用于存取数据库以及查询、更新和管理关系数据库系统 1.5 Java的诞生 ·1995年Sun推出的Java只是一种语言 ·JDK包括两个部分:运行环境(JRE)和开发环境(JDK)在运行环境包括了核心API、集成API、用户界面