
初识 数据结构
文章平均质量分 77
骑驴的胖头
这个作者很懒,什么都没留下…
展开
-
排序之冒泡排序
冒泡排序 该排序通过将数组嵌套循环, 将相邻的两个对象进行比较,正序排序为例,如果a[0]的对象大于a[1]的对象, 则将两个对象位置交换,将小的对象置前,直到数组结束,排序的过程中每次循环时,指针始终 指向是当前最大的对象,将次对象与后面的对象相比较,当小于后一位对象时,置换,指针依然指向 当前最大的对象。当一次循环结束时,已将最大的对象移至 数组尾部。以此类推完成排序。 class...2009-12-21 14:26:49 · 86 阅读 · 0 评论 -
递归------消除递归(递归原理解析)
递归原理:大部分编译器都是使用栈来实现递归的,当调用一个方法的时候编译器会将参数和返回地址压入栈中,然后把控制转移给这个方法,当方法返回时,这些值退栈,参数小时。 下面是模拟的递归的过程:package digui;public class XiaoDigui{ static int theNumber; static int theAnswer; static S...原创 2010-08-20 14:36:18 · 1574 阅读 · 0 评论 -
递归------单词变位
public class AnagarmApp { static int size; static int count; static char[] arrChar = new char[100]; public static void main(String[] args) { String input = "cat"; size = input.le...2010-08-19 15:28:40 · 215 阅读 · 0 评论 -
链表栈与链表队列
链表栈与链表队列 链表实现的栈和队列,这里只展示实现过程,有不明的地方可以参看我的前面关于栈,队列和列表的说明 //栈:先进后出class LinkStack{ public static void main(String[] args) { LinkStack l = new LinkStack(); l.push(1); l.push(2);...2009-12-25 14:21:11 · 180 阅读 · 0 评论 -
链表——双端链
链表——双端链表: 双端链表和单向列表时相似的,但是在单向列表的基础上增加了一个特性,就是增加了对最后一个链接点的引用,就像对第一个链接点的引用一样。但我们试图寻找最后一个链接点的时候就不用像单向链表需要遍历所有的链接点了,可以直接通过最后一个链接的位置获取数据,并且可以在链表的尾端添加节点。 //双端列表class FirstLastList{ public ...2009-12-25 11:36:18 · 265 阅读 · 0 评论 -
链表——初识链表
链表——前言: (小弟初学数据结构,有错误的地方望大家不吝赐教) 认识链表:列表相比数组更具有优势,链表不同于数据和其他数据结构依靠位置来进行访问或者其他操作,如数组是依靠下表来操作数据。而链表是通过关系来寻找或者操作数据。 链表是由“链接点” 组成,每个链接点是一个数据对象,每个链接点的对象中包含着下一个链接点的引用(next),但是链表本身有一个字段是指向第一...2009-12-24 15:16:39 · 171 阅读 · 0 评论 -
队列的初步理解
队列队列数据顺序是先进先出,后进后出.队列添加数据的方式很特别,传统意义上的队列,删除或者添加数据时,后面或者前面的所有的数据会依次移动一位。但是这样效率会很低。所以队列的数据排列上会在数组的前端空出几个缓冲位置,这样当操作队列的时候只需要移动指针,而不需要操作整个队列。 class Queue{ private int maxSize; private long[] queA...2009-12-23 10:30:16 · 135 阅读 · 0 评论 -
栈的理解
栈 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾...2009-12-23 09:28:39 · 128 阅读 · 0 评论 -
排序之插入排序
插入算法循环数组,以指针数据为基值 并且记录,,通过和左侧(右侧)的循环比较,当比较值大于(小于)基值时将大的值至后,指针继续移动,比较,置换。直到遇到小于基值,或者到数组边界时截止,并且置换至首位。结束一次内循环,这是外循环的指针左侧的是有序。 class Sort{ private long[] a; private int nElement; public So...2009-12-22 10:38:16 · 81 阅读 · 0 评论 -
排序之选择排序
选择排序 选择排序 观其名,识其意。和冒泡一样通过嵌套循环将数组所有对象扫描一遍,选择最小(最大)的对象, 将其置换至对应的位置(a[0]/a[length-1]). 这里可以将排序的过程看做两个步骤。 1 循环扫描数组,选择当前最小的对象并且记录其位置。 2 将最小的对象置换至对应的位置上。 class Sort{ private long[] a; private int...2009-12-21 14:41:32 · 84 阅读 · 0 评论 -
高级排序--希尔排序
希尔排序: 实际上是基于插入排序的,在插入排序中相比较的是相邻的两个元素,但是如果一个很小的数在数组的最右端,而他本应该是在最左端的,这样的话所有中间的元素都要向右移动一位,并且执行了N次。希尔排序就是首先对大跨度的元素做比较并且进行移动,这样的久相对有序了,再在这个基础上进行普通的插入排序,效率就会高很多。 效率: 快速排序>希尔排序>简单排序希尔排序在最...原创 2010-08-26 15:18:20 · 130 阅读 · 0 评论