![](https://img-blog.csdnimg.cn/20190429113650903.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法与数据结构-java
算法与数据结构是编码的必备技能之一,学好算法与数据结构才能在写代码的道路上走的更远。
java小白~
good good study,day day up.
展开
-
java-二叉树(code)
二叉树的通用接口 public interface ITree<E> { public int size();// public boolean isEmpty(); public void clear(); public void add(E element); public void remove(E element); public...原创 2020-04-24 16:42:38 · 173 阅读 · 0 评论 -
算法与数据结构-排序(2)
归并排序 如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。 public static void merger(int[] a,int left,int mid,int right) { int[] temp=new int[a.length]; int p1=left,p2=mid+1,k=left; ...原创 2019-04-30 09:56:52 · 90 阅读 · 0 评论 -
算法与数据结构-排序(1)
有序度 有序度是数组中具有有序关系的元素对的个数。有序元素对用数学表达式表示就是这样:有序元素对:a[i] <= a[j], 如果 i < j。 满有序度 对于一个完全有序的数组,比如 1,2,3,4,5,6,有序度就是n*(n-1)/2 逆有序度 逆序度 = 满有序度 - 有序度。我们排序的过程就是一种增加有序度,减少逆序度的过程,最后达到满有序度,就说明排序完成了。 冒泡 时间复杂...原创 2019-04-30 09:51:57 · 94 阅读 · 0 评论 -
算法与数据结构-递归
题目 走n个台阶,每次可以走一步或者两步,有多少钟走法 递归公式 f(1) = 1; f(2) = 2; f(n) = f(n-1)+f(n-2) 代码实现 int f(int n){ if(n1) return 1; if(n2) return 2; return f(n-1)+f(n-2); } 满足递归的三个条件 一个问题的解可以分解为几个子问题的解 这个问题与分解之后的子问题,除了数据规...原创 2019-04-30 09:42:13 · 109 阅读 · 0 评论 -
算法与数据结构-链表
链表 底层存储结构 数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个 100MB 大小的数组,当内存中没有连续 的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB,仍然会申请失败。而链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用。 单链表 我们把内存块称为链表的“结点”。为了将所有的结点串起来,每个链表的结点除了存储数据...原创 2019-04-30 09:33:27 · 136 阅读 · 0 评论 -
算法与数据结构-队列
队列 特点 先进先出 入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头部取一个元素。 用数组实现的队列叫作顺序队列,用链表实现的队列,叫作链式队列。 Demo 注意:这个Demo里边的Array是数组篇中的Array引用。 package com.wanda.array; import com.wanda.interfaces.Queue; public cl...原创 2019-04-29 11:36:19 · 150 阅读 · 0 评论 -
算法与数据结构-栈
栈的特点 先进后出 从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数 据。 栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,我们叫作顺序 栈,用链表实现的栈,我们叫作链式栈。 用数组实现的顺序栈Demo 注意:这个Demo里边的Array是基于上一篇的数组里边的Array类。 package com.wanda.array; import com.wanda...原创 2019-04-29 11:16:20 · 83 阅读 · 0 评论 -
算法与数据结构-数组
数组 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同 类型的数据。 数组的特点 数组用一块连续的内存空间,来存储相同类型的一组数据,最大的特点就是支持随机访问,但插入、删除操作也 因此变得比较低效,平均情况时间复杂度为 O(n)。在平时的业务开发中,我们可以直接使 用编程语言提供的容器类,但是,如果是特别底层的开发,直接使用数组可能会更合适。 Demo,底层用数...原创 2019-04-29 11:08:08 · 105 阅读 · 0 评论 -
算法与数据结构-基础
时间复杂度 时间复杂度的全称是渐进时间复杂度,表示算法的执行时间与数据规模之间的增长关系。 分析原则 1. 只关注循环执行次数最多的一段代码 2. 加法法则:总复杂度等于量级最大的那段代码的复杂度 3. 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积 常见的时间复杂度 常量阶 O(1) 对数阶O(logn) 线性阶O(n) 线性对数阶O(nlogn) 平方阶O(n平方) 空间复杂度 空间复...原创 2019-04-29 11:02:03 · 74 阅读 · 0 评论