直接上代码const linkList=new LinkList() function LinkList(){var Node=function(element){this.element=element;this.next=null}; var length=0; var head=null; }LinkList.prototype.append=function(value){var node=new Node()var current;if(head==null){head=node;}else{while(current.next){current=current.next}current.next=node;}length++;} //向链表头的下一个位置添加元素 LinkList.prototype.prepend=function(val...
场景: 后端返回的是[[‘2015-1-1’,1,1],[‘2015-1-2’,1,2]]这样的Json数组,代表的意思是2015-1-1这个日期下新增的数据为1,减少的数据为1,2015-1-2这个日期,新增的数据为1,减少的数据为2,但是在统计图表上要在x轴显示时间,y轴显示新增和减少的数据这时,就要把数据转化成[[‘2015-1-1’,’2015-1-2’],[1,1],[1,2]]这样的结构,这也可以叫做矩阵的转置。 关于矩阵转置,可以用下图简单说明一下: 图片描述(最多50字) A表示...
单链表//创建构造函数创建节点 function Node(element){this.element = element;this.next = null; } //链表的构造函数function LList(){this.head = new Node(head);this.insert = insert;this.remove = remove;this.display = display;this.find = find;this.prefind = prefind;}function insert(newElement,item){var cur = this.find(item);var node = new Node(newElement);if(cur == null){alert(没有找到插入位置);}else{no...
选择V-S中的点加入S时用了贪心思想,即求d[]中legth最小且为被标记(未加入加入S)的点。 一点都没优化的实现:1 import java.lang.reflect.Array;2 3 /**4 * Created by yueli on 2018/10/14.5 */6 public class Dijkstra {7 boolean mark[]=new boolean[5];8 int v[][]={{0,10,-1,30,100}, {-1,0,50,-1,-1},{-1,-1,0,-1,10},{-1,10,20,0,60},{-1,-1,-1,-1,0}};9 class Dist{ 10 public int pre; 11 ...
1.后台生成矩阵 double[,] arr = new double[allVertices.Count(), allVertices.Count()]; //矩阵 for (int i = 0; i < allVertices.Count(); i++) { for (int j = 0; j < allVertices.Count(); j++) { var start1 = allVertices[i].Point; //起点 var end1 = allVertices[j].Point; //终点 //lines...
// 快速排序class QuickSort {/*** @param {*[]} originalArray* @return {*[]}*/Sort(originalArray) {// 复制 originalArray 数组防止它被修改const array = [...originalArray];// 如果 originalArray 数组元素个数 <=1,就不需要排序了,直接返回if (array.length <= 1) {return array;}// 初始化左数组和右数组const leftArray = [];const rightArray = [];// 取出 originalArray 数组中的第一个元素作为中间比较值const pivo...
1、冒泡排序function sort(arr){for(let i = 0;i<arr.length;i++){for(let j = 0;j<arr.length - 1 - i;j++){if(arr[j] > arr[j + 1]){[arr[j],arr[j + 1]] = [arr[j + 1],arr[j]]}}}return arr; } 这种排序方式有两种极端的情况,一种是正序,就会一直在做无用功,还有一种就是逆序。
export function RMBFitter(n){ /**金额大写的转换 */ var fraction = ['角', '分']; var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; //var head = n < 0? '欠': ''; n = Math.abs(n); var s = ''; for (var i = 0; i < fraction.length; i++) { // console.log(digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]); s +=...
dijkstra单源最短路径 给定一个带权有向图G=(V,E) ,其中每条边的权是一个非负实数。另外,还给定 V 中的一个顶点,称为源。现在我们要计算从源到所有其他各顶点的最短路径长度。这里的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。 下面给出两个计算单源最短路径的模板。 Dijkstra_简化版:时间复杂度O(n^2),不可处理重边图//计算图的以s点为起点的单源最短路径//图中节点从1到n编号//运行dijkst...
如何在Mongo shell中对NumberLong值执行精确算术?我的理解是Javascript只有一个数字类型 – 数字 – 通常限制为54位浮点精度. 使用(例如)标准加法的直接算术显示降级强制到较低精度类型:> NumberLong("123456789012345678")+NumberLong("1") 123456789012345680 > NumberLong("123456789012345678")+NumberLong("2") 123456789012345680我可以看到如何使用字符串表示来提取NumberLong的部分,但这似乎效率低,并且对增量或除法等算...
原文:十大经典排序算法(动图演示) 希尔排序1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。 算法描述:将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:选择一个增量序列t1,t2,…,tk,其中t1>t2>...,tk=1; 按增量序列个数k,对序列进行k 趟排序; 每趟排序,根据对应的增量...