Martube Home for writing

算法—时间复杂度

算法—时间复杂度 全文大部分引用自 算法—时间复杂度 什么是时间复杂度 关于时间频度: 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中... Read more

龟排三兄弟

龟排三兄弟 本文大部分知识点来源于知乎专栏:Java必学知识 冒泡排序 思想 冒泡排序算法的运作如下: 比较两个相邻的数,如果前面的数大于后面的数,则将这两个数交换位置。第一次遍历后,最大的数会被放到数组的最后位置,即array[length - 1]。 第二次遍历时跳过最后一个元素,因为该元素通过第一次遍历已经确定是最大值。 持续每次对越来越少的元素重复上面的步骤,直到没... Read more

快速排序

快速排序 本文大部分知识点来源于知乎专栏:Java必学知识 快速排序 思想 快速排序(QuickSort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是: 从要排序的数据中取一个数为“基准数”。 通过一趟排序将要排序的数据分割成独立的两部分,其中左边的数据都比“基准数”小,右边的数据都比... Read more

归并排序

归并排序 本文大部分知识点来源于知乎专栏:Java必学知识 归并排序 基本思想 归并排序的主要思想是分治法。主要过程是: 将n个元素从中间切开,分成两部分。(左边可能比右边多1个数) 将步骤1分成的两部分,再分别进行递归分解。直到所有部分的元素个数都为1。 从最底层开始逐步合并两个排好序的数列。 思考 考虑一个问题,如何将两个有序数列合并成一个有序数列? 很简单,由... Read more

java 处理时间、数组、字符等小轮子的集合

java 处理时间、数组、字符等小轮子的集合 banner 生成利器 http://patorjk.com/software/taag 时间 获得当天零时零分零秒 /** * 获得当天零时零分零秒 * @return */ public Date getDayBeginDate(Date date){ Calendar ca... Read more