常用算法
ljt2724960661
这个作者很懒,什么都没留下…
展开
-
算法--最接近的三数之和(MR)
给你一个长度为 n 的整数数组nums和 一个目标值target。请你从 nums 中选出三个整数,使它们的和与target最接近。返回这三个数的和。假定每组输入只存在恰好一个解。 示例 1: 输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。 示例 2: 输入:nums = [0,0,0], target = 1 输出:0 解法1:暴力法 public int threeSumClo...原创 2021-11-14 22:39:01 · 152 阅读 · 0 评论 -
快速排序
所谓的快速排序的思想就是,首先把数组的第一个数拿出来做为一个key,在前后分别设置一个i,j做为标识,然后拿这个key对这个数组从后面往前遍历,及j--,直到找到第一个小于这个key的那个数,然后交换这两个值,交换完成后,我们拿着这个key要从i往后遍历了,及i++;一直循环到i=j结束,当这里结束后,我们会发现大于这个key的值都会跑到这个key的后面,不是的话就可能你写错了,小于这个key的就转载 2016-05-20 20:39:44 · 274 阅读 · 0 评论 -
冒泡排序入门
这一节,我想说一下冒泡排序算法,看一看是否有人能和我产生“共鸣”,可能很多人会认为网上不是有嘛,一搜一大片,的确,但那是别人思考的成果,我是学计算机专业的,接触算法虽然很早,但是思维上懒惰,很少认真地思考冒泡算法实现的道理,以前面试的时候,很多面试官要求当场写冒泡算法,尽管“背出来”了,但坦白讲还是没明白其道理。现在我说说对它得重新认识。假如冒泡前提是从小到大排列。首先,得知道它的原理,比较相邻的原创 2016-11-22 14:52:56 · 264 阅读 · 0 评论 -
最小生成树(普利姆算法、克鲁斯卡尔算法)
给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树. 求最小生成树的算法 (1) 克鲁斯卡尔算法 图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间. (2) 普里姆算法 图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点陆续转载 2017-01-12 08:00:03 · 564 阅读 · 0 评论 -
希尔排序
1、基本思想: 希尔排序也成为“缩小增量排序”,其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序列“基本有序”后,最后在对所有元素进行一次直接插入排序。因此,我们要采用跳跃分割的策略:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到的结果是基本有序而不是局部有序。希尔排序转载 2017-07-26 08:59:38 · 233 阅读 · 0 评论