随笔分类 -  秋招刷题篇

小和问题、逆序对问题
摘要:面试常考:归并排序的思想(分治) import java.util.Arrays; //小和问题 public class SmallSort { public static void main(String[] args) { int[] arr = {1,3,4,2,5}; System.out.println(Arrays.toString(ar... 阅读全文
posted @ 2019-05-05 20:52 源格 阅读(166) 评论(0) 推荐(0)
八大基本排序--堆排序
摘要:预备知识:顺序存储的二叉树 一.顺序存储二叉树的性质 1. 第n个元素的左子节点:2*n+1 2. 第n个元素的右子节点:2*n+2 3. 第n个元素的父节点:(n-1)/2 二.顺序存储二叉树的遍历 堆排序:利用堆这种数据结构 堆分为:大顶堆、小顶堆 大顶堆:父节点永远都大于它的任何一个子节点(不论是左子节点还是右子节点) 升序排列使用:大顶堆 降序排列使用:小顶堆 把数组画成一颗完全二叉树... 阅读全文
posted @ 2019-04-18 11:39 源格 阅读(511) 评论(0) 推荐(0)
八大基本排序--基数排序
摘要:原数组和桶如下: 第一次按照个位排序如下 取出的时候按照从0~9的顺序,且同一个桶中,先放进去的先出来 第二次按照十位排序如下 取出结果如下 第三次次按照百位排序如下 取出结果如下: 此时数组已经有序了 代码思路: 我们排序的次数取决于数组中最大是数字的位数 import java.util.Arrays; //基数排序 public class RadixSort { ... 阅读全文
posted @ 2019-04-07 21:26 源格 阅读(270) 评论(0) 推荐(0)
八大基本排序--归并排序
摘要:和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 代码思路如下 阅读全文
posted @ 2019-04-01 17:26 源格 阅读(112) 评论(0) 推荐(0)
八大基本排序--选择排序
摘要:首先在未排序序列中找到最小的元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小的元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 第0次排序 首先认为4最小,然后依次比较 找到最小值1 由于是第0次排序,把找到的最小值1跟第0个数字交换位置 然后开始第1次排序,【再从未排序的数字中找到最小的值与第1个数字交换】 import java.u... 阅读全文
posted @ 2019-04-01 14:35 源格 阅读(160) 评论(0) 推荐(0)
八大基本排序--希尔排序
摘要:希尔排序需要选择一个增量序列,通常选为数组长度/2 代码如下: 输出 阅读全文
posted @ 2019-04-01 08:44 源格 阅读(116) 评论(0) 推荐(0)
八大基本排序--插入排序
摘要:在遍历某一个数字的时候,认为前面的数据都是已经排好序了的,挨个跟前面的数字比较,在合适的地方插入这个数据 从第2个数开始排序就可以 原理演示如下: 3比5小,则交换顺序 4比5小,4跟5交换位置 4比3大,则插入原来5所在的位置 7比5大,则下标直接后移 1比7小,7向后移1位 1比5小,5向后移1位 1比4小,4向后移1位 1比3小,3向后移1位 到头了,把1赋给第一... 阅读全文
posted @ 2019-03-31 17:04 源格 阅读(189) 评论(0) 推荐(0)
八大基本排序--冒泡排序
摘要:面试中需要手写频率最高的一个排序,也是最简单 冒泡排序就是两两比较,把最大的放到最后面 一开始扫过N个数、然后扫过N-1个数...等差数列 时间复杂度O(n^2): 可以通过增加一个附加标记来优化该算法 阅读全文
posted @ 2019-03-30 20:00 源格 阅读(168) 评论(0) 推荐(0)
汉诺塔
摘要:汉诺塔是一个经典的递归问题 实际上每次只需要考虑最下面的盘子,和除最下面以外所有的盘子(递归) //汉诺塔 public class HanioDemo { public static void main(String[] args) { char from = 'A'; char mid = 'B'; char end = 'C'; ... 阅读全文
posted @ 2019-03-30 15:40 源格 阅读(147) 评论(0) 推荐(0)
手写斐波那契数列
摘要:斐波那契数列:前两个值是1(固定的),后面的数字是其前面两个数字的和 是典型的递归思想 注意开始项为第一项 //斐波那契数列 public class FebonacciDemo { public static void main(String[] args) { //1 1 2 3 5 8 13 21 int res = FebonacciDemo.fe... 阅读全文
posted @ 2019-03-30 09:33 源格 阅读(227) 评论(0) 推荐(0)
【java】String类常见操作
摘要:秋招做题需要,总结String类常用api如下: 简单的:str.length()、str.isEmpty()、str.split(“;”)切割 1.字符串反转:借助StringBuilder/StringBuffer,(常用StringBuilder类,因为快) 2.截取字符串:substring 阅读全文
posted @ 2019-03-29 19:28 源格 阅读(747) 评论(0) 推荐(0)