算法&数据结构
文章平均质量分 82
自己遇到的算法的总结。
ningmengbaby
每个人都有属于自己的那个闪光点,重要的是绽放!
展开
-
ArrayList和LinkedList区别
ArrayList:顺序表,动态数组,随机访问。无参构造函数:使用无参构造函数初始化ArrayList后,它当时的数组容量为 0。如果使用了无参构造函数来初始化ArrayList, 只有当我们真正对数据进行添加操作add时,才会给数组分配一个默认的初始容量。1.ensureCapacityInternal()点进这个方法2. calculateCapacity()点进这个方法3.此时这才会分配默认的初始容量。原创 2022-08-24 16:40:16 · 649 阅读 · 0 评论 -
Java 求 1到n各阶乘的和
题目:1-n阶乘之和分析:1的阶乘是1 2的阶乘是1*2 3的阶乘是1*2*3 4的阶乘是1*2*3*4 .........代码:public static long factorialSum(int num) { long sum = 0; long temp = 1; for (int i = 1; i <= n...原创 2019-10-09 19:37:34 · 5872 阅读 · 0 评论 -
Java 判断一个链表是否成环
成环:可以是循环单链表,即首位相连;也可以是部分成环,即尾部和其他节点相连。判断是否成环:使用快慢指针遍历链表:慢指针:从头节点开始,一次跳一个节点。快指针:从头节点开始,一次跳两个节点。如果是成环的,这两个指针一定会相遇。代码如下: public static void main(String[] args) { Node n...原创 2019-09-23 22:28:25 · 762 阅读 · 0 评论 -
HashMap的原理
目录是什么?Put方法Get方法HashMap的初始长度?Hash算法为什么长度必须是16或者2的幂?如果长度是10会怎么样?扩容原则步骤写在前头的话:本文是以jdk1.7的基础上进行的。是什么?HashMap是一个用于存储Key-Value键值对的集合,每一个键值对叫做Entry。Entry分散存储在数组当中,这个数组是HashMap的主干...原创 2019-05-28 21:08:58 · 136 阅读 · 4 评论 -
Java找出数组中第二大的值
题目:给出一个数组{7,3,19,40,4,7,1};找出第二大的值思路:定义两个变量:一个变量用来存储数组的最大值,初始为数组首元素。另一个变量用来存储数组元素的第二大数,初始值为最小负整数,然后遍历数组元素。实现: public static int findSecMax(int[] arr) { int max = arr[0]; //...原创 2019-10-09 20:14:43 · 5573 阅读 · 2 评论 -
Java语言找出数组中的最大值
代码如下:public class Practice{ //找最大值 public static int max(int [] array){ int max=0; int i=0; for(i=0;i<array.length;i++){ if(array[i]>max){ max=array[i]; } } return max; ...原创 2019-09-23 22:22:13 · 860 阅读 · 3 评论 -
Java链表反转
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLJavapublic ListNode reverseList(ListNode head) { if (head == null || head.next == null) return he...原创 2019-09-29 20:39:23 · 178 阅读 · 0 评论 -
Java语言实现一个队列
【前言】以前写代码总是用的jdk自带的工具类,如果要想明白底层是怎么实现的,必须得自己亲自写一个。【过程】用Java语言实现一个队列,符合先进先出的原则。代码如下:/** * Created by 郝雨烁 on 2019/9/23. */public class Queue { private Object[] data; //队列头 privat...原创 2019-09-23 22:20:03 · 200 阅读 · 0 评论 -
各种排序算法的时间与空间复杂度
各种排序算法的时间复杂度和空间复杂度排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 冒泡排序 O(n2) O(n) O(n2) O(1) 选择排序 O(n2) O(n2) O(n2) O(1) 插入排序 O(n2) O(n) O(n2) O(1) 希尔排序 O(n l...原创 2019-10-10 20:34:41 · 146 阅读 · 0 评论 -
算法进阶之动态规划
动态规划的本质,是对问题状态的定义和状态转移方程的定义。 动态规划是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。能用动态规划解决的问题的特点 1) 问题具有最优子结构性质。如果问题的最优解所包含的 子问题的解也是最优的,我们就称该问题具有最优子结构性质。 2) 重叠子问题。当前的若干个状态原创 2017-09-22 21:11:39 · 316 阅读 · 30 评论 -
快速排序
相信算法对于许多开发人员来说都是一大难点,之所以难,就像设计模式一样,许多人在阅读之后,没有很好地理解,也不愿意动手上机操作,只停留在理论的学习上面,随着时间推移就慢慢淡忘。有些东西,你可以发明创造,但是有些东西呢,你要么死记硬背,要么好好理解并动手进行练习来巩固。搞开发的话,死记硬背没用,好好理解火候还是差一点。最好的方式,还要在理解的基础上多敲敲代码,使自己即知其然,又知其所以然。...原创 2017-09-27 17:59:26 · 259 阅读 · 9 评论 -
算法进阶之贪心算法
看着大家都在对自己学习过的算法进行总结,我也记录一下吧! 从贪心算法开始!【前言】 有人说贪心算法是最简单的算法,原因很简单:你我其实都很贪,根本不用学就知道怎么贪。有人说贪心算法是最复杂的算法,原因也很简单:这世上会贪的人太多了,那轮到你我的份?贪心算法思想 顾名思义,贪心算法总是作出在当前看来最好的选择。原创 2017-09-23 16:17:39 · 418 阅读 · 30 评论 -
算法进阶之回溯算法
版权声明:www.gudianxiaoshuo.com 原创文章版权 -- 古典小说网 1 什么是回溯法转载 2017-09-23 17:00:25 · 314 阅读 · 32 评论 -
希尔排序
排序四 希尔排序目录要点算法分析 希尔排序的算法性能 时间复杂度 算法稳定性 直接插入排序和希尔排序的比较完整参考代码 JAVA版本参考资料相关阅读要点希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。该方法因DL.Shell于1959年提出而得名。希尔排序的基本思想是:把记录按步长 ga转载 2017-09-07 20:01:42 · 3673 阅读 · 18 评论 -
迈进算法的大门
【引言】算法,这不是第一次接触了,但是自己真正提起重视来还是第一次。【过程】leader 一开始,云姐和贵婷师姐也是从基础排序开始入手,一点一点引导我们进入算法的大门。不知道是不是她们俩的讲课风格不同,给我有两种不一样的感受,云姐就是着重于思想上面,时刻提醒我们思想上移,行动下移,贵婷师姐则是给我们讲解具体的知识,总之,收获颇多。每次讲课之前都是有试讲的,通过小...原创 2017-09-07 20:31:22 · 436 阅读 · 21 评论 -
选择排序法
首先介绍一下代码Dim a(1 To 10) As IntegerPrivate Sub Command1_Click() Form_Load End SubPrivate Sub Command2_Click() p = “” For i = 1 To 9 '选择排序外循环 For j = i + 1 To 10 '内循环 If原创 2016-05-20 21:40:01 · 904 阅读 · 38 评论 -
冒泡排序法
首先是代码介绍Dim a(1 To 10)Private Sub Command1_Click() Form_LoadEnd Sub Private Sub Command2_Click()p = “”For i = 1 To 9 '冒泡排序 For j = 1 To 10 - iIf a(j) < a(j + 1) Then '相邻两个数比较原创 2016-05-20 21:31:54 · 816 阅读 · 36 评论 -
插入排序
小介绍所谓插入排序法乃是将一个数目插入该占据的位置举例假设我们输入的是“5,1,4,2,3”我们从第二个数字开始,这个数字是1,我们的任务只要看看1有没有正确的位置,我们的做法是和这个数字左边的数字来比,因此我们比较1和5,1比5小,所以我们就交换1和5,原来的排列就变成了“1,5,4,2,3”接下来,我们看看第3个数字有没有放在正确的位置。这个数字是4,它的左边的数字是5,4比5小,所以我们将4和原创 2016-07-24 11:35:13 · 634 阅读 · 34 评论 -
桶排序
简介桶排序或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。特点1,桶排序是稳定的2,桶排序是常见排序里最快的一种,比快排还要快…大多数情况下3,桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法代码介绍Dim a(10) as integer ‘定义原创 2016-07-24 11:50:11 · 522 阅读 · 38 评论