摘要: 原数组和桶如下: 第一次按照个位排序如下 取出的时候按照从0~9的顺序,且同一个桶中,先放进去的先出来 第二次按照十位排序如下 取出结果如下 第三次次按照百位排序如下 取出结果如下: 此时数组已经有序了 代码思路: 我们排序的次数取决于数组中最大是数字的位数 import java.util.Arrays; //基数排序 public class RadixSort { ... 阅读全文
posted @ 2019-04-07 21:26 源格 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 1.构造函数 Stack只有一个默认构造函数 Stack() Stack stack = new Stack(); 2.常用api (1)入栈:push() (2)取出栈顶元素,不执行删除:peek() (3)出栈、取出栈顶元素,并将该元素从栈中删除:pop() (4)判断栈是否为空:isEmpty(),返回值是boolean类型 阅读全文
posted @ 2019-04-01 20:41 源格 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList 解决方案:利用栈来完成 import java.util.ArrayList; import java.util.Stack; //利用栈stack public class TailToHead { public static void main(String[] args) { ListNode node... 阅读全文
posted @ 2019-04-01 20:28 源格 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 代码思路如下 阅读全文
posted @ 2019-04-01 17:26 源格 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 首先在未排序序列中找到最小的元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小的元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 第0次排序 首先认为4最小,然后依次比较 找到最小值1 由于是第0次排序,把找到的最小值1跟第0个数字交换位置 然后开始第1次排序,【再从未排序的数字中找到最小的值与第1个数字交换】 import java.u... 阅读全文
posted @ 2019-04-01 14:35 源格 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 希尔排序需要选择一个增量序列,通常选为数组长度/2 代码如下: 输出 阅读全文
posted @ 2019-04-01 08:44 源格 阅读(108) 评论(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 源格 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 面试中需要手写频率最高的一个排序,也是最简单 冒泡排序就是两两比较,把最大的放到最后面 一开始扫过N个数、然后扫过N-1个数...等差数列 时间复杂度O(n^2): 可以通过增加一个附加标记来优化该算法 阅读全文
posted @ 2019-03-30 20:00 源格 阅读(156) 评论(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 源格 阅读(137) 评论(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 源格 阅读(220) 评论(0) 推荐(0) 编辑