
java数据结构
hellohass
保持热爱
展开
-
使用迭代器(Iterator)来实现链表的相关操作
在这一篇里,要讲的是如何使用迭代器对链表进行相关的操作,比如删除,获取,插入等操作,那首先介绍一下什么是迭代器,java里面的迭代器的实用性很大,在我们实际对链表进行删除操作时,如果是要对某个限制条件下的所有链表数据都删除,如果是用普通的指针,那就必须每次都对链表进行遍历查找,符合了条件进行删除,而效率很低,而不像数组,有固定的下标位,所以我们设法给予一个类似数组下标的东西来表明链表的位置。这原创 2015-08-25 16:43:25 · 2686 阅读 · 0 评论 -
使用递归实现全排列的算法
在这一篇中,我们来讲如何用递归来实现字符的全排列算法,当然同样适用于其他的数据类型,不多说了,直接上代码: private static void doAnagram(int size2) { //进行递归调用,不断的调用自己,将n-1个元素进行转换,并且进行n次的循环。此处需要重点理解 if (size2 == 1) { return; } for (int i原创 2015-08-26 21:11:48 · 1500 阅读 · 0 评论 -
使用栈模拟递归的算法
这一篇笔者要讲的是如何用栈来模拟递归,或者说替代递归的算法,现在我们假如要算从三角形数的叠加,比如输入10 ,输出是55,输入是100 ,输出是5050,等等。首先,我们建一个栈:public class StackX { private int maxsize; private Params[] stackActivity; private int top; public S原创 2015-08-27 22:34:23 · 3789 阅读 · 0 评论 -
希尔排序算法
这篇是介绍一下希尔排序,希尔排序的原理就是在插入排序的基础上进行修改,相比起插入排序的元素移动次数,希尔排序移动次数大大的减少。希尔排序的原理是将一定间隔的元素进行比较,再进行交换,此举的好处在于若两个元素的距离相差比较远,那可以不用移动许多的元素再进行交换,而是直接进行交换,这就省去了许多的时间开销,由原来插入排序的O(N^2)降到现在的O(N*(logN)^2),时间复杂度大大的减少,虽然原创 2015-09-01 21:57:54 · 836 阅读 · 0 评论 -
快速排序算法与插入排序算法的结合
在这一篇中笔者要讲的是插入排序算法与快速排序算法的结合,为什么要这样结合使用?因为插入排序对基本排好序的数组来做排序的速度很快,而快速排序能将无序数组快速的变化为基本有序,那大家可能就问,就使用快排就行了嘛,的确,使用快排也是很快速的,但是在接近排序完成的时刻,换成插入排序算法更加能提高排序速度,笔者写两个程序比较下就知道了。首先第一个程序是单纯的使用快排:public class MyA原创 2015-09-02 17:22:25 · 2541 阅读 · 0 评论 -
用栈来实现后缀表达式
在这里开始讲述关于java的数据结构,争取每日一更,或者两日一更,将所有java的数据结构相关的结构类型,在这里讲解,好了,现在我们开始来讲第一个结构类型,栈,在这里,我要用栈来实现关于算式的计算,在这里使用了后缀表达式。(声明大部分知识来自《java数据结构和算法》,笔者在这里写下读后总结以及自己的补充。)什么是后缀表达式?这个大家学过c语言的都应该知道了,我要用java来实现,同样的,思路原创 2015-08-22 16:22:09 · 1117 阅读 · 0 评论