- 博客(3)
- 收藏
- 关注
翻译 最长回文字符串算法-Manacher’s Algorithm-马拉车算法
本文翻译于LeetCode上关于最长回文字符串的说明除了翻译之外,其中还加入了个人的理解的部分,将其中没有详细说明的部分进行了解释。时间复杂度为O(n)的算法首先,我们需要讲输入的字符串 S 进行一下转换得到 T,转换的方法就是通过在每两个字符之间插入一个字符串“#”,你马上就能知道为什么要这么做。例如 输入字符串 S = “abaaba”, 转换之后得到了 T = “#a#b#a
2015-12-29 20:56:25 4418 2
原创 Java 实现堆排序
堆排序主要是利用堆在根节点上的特性,既在大顶堆的情况下,堆的第一个元素是堆当中最大的元素,而在小顶堆的情况下,堆的第一个元素是最小的节点。所以在堆排序的过程,主要的操作就是对每次取出堆顶的元素之后(在这里使用大顶堆),我们就选出了堆中的最大元素,然后对堆剩下的元素进行再次进行大顶堆的调正,得到一个新的大顶堆,这样再次取值的时候就可以取出剩下元素的最大值,依次类推,即可得到一个有序的数组。堆的时间复杂
2015-12-20 14:22:57 448
原创 希尔排序
希尔排序是对插入排序的一种改进。 下面对希尔排序的介绍来自于维基百科*希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位下面是代码实现package com.
2015-12-06 15:58:50 1315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人