沙漏

一步步从无到有的创造

归并排序----java实现

归并排序 归并排序是将两个有序的序列合并成一个新的有序序列。 归并排序: (1)递归分解数组;    将数组每次折半划分,直到把数组划分为n个长度为1的有序序列。 (2)合并排序数组; 先做两两合并,得到2/n 个有序序列,再两两合并,不断重复这个过程,直到得到一个长度为n的数组。 合并两个排序数...

2016-07-26 16:59:04

阅读数 319

评论数 0

插入排序----直接插入排序----java实现

依次将待排序的数据元素按其关键字大小插入到前面的有序序列 第1趟:将第2个元素插入到前面的有序序列中,此时前面就只有一个元素,是有序的; 第2趟:将第3个元素插入到前面的有序序列; ....... 第n-1趟:将第n-1个元素插入到前面的有序序列。 public void insertS...

2016-07-11 21:46:31

阅读数 185

评论数 0

交换排序----冒泡排序----java实现

冒泡排序: 第1趟:依次比较0和1、1和2.......n-2和n-1索引位置的元素,如果发现一个数比他后面的数大,则交换着两个数的位置,经过第一趟排序,最大的数排在了数组的最后面。 第2趟:依次比较0和1、1和2.......n-3和n-2索引位置的元素,如果发现一个数比他后面的数大,则交换...

2016-07-11 15:49:32

阅读数 276

评论数 0

选择排序----堆排序----java实现

(1)小顶堆     假设有n个元素的序列,k0-kn,如果将这组数据排成一棵完全二叉树,则此树的特点是:树中所有节点的值都小于其左右节点的值,此树的根必然是最小的; (2)大顶堆 假设有n个元素的序列,k0-kn,如果将这组数据排成一棵完全二叉树,则此树的特点是:树中所有节点的值都大于其左...

2016-07-11 15:26:10

阅读数 255

评论数 0

选择排序----直接选择排序----java实现

思路: 第一趟比较:程序将记录定位在数组的第一个位置,拿第一个数据与后面的每个数据对比, 用一个变量mix记录比第一个数小的数据的索引,通过比较不断更新mix,最后得到整个数组中最小的元素的索引,将第一个数与第mix个数交换,则最小数位于数组的其实位置了, 第二趟比较:程序将记录定位在数组的第二个...

2016-07-11 15:19:15

阅读数 2861

评论数 1

二叉树的深度(递归和非递归)---java实现

递归实现 为了求树的深度,可以先求其左子树的深度和右子树的深度,可以用递归实现,递归的出口就是节点为空。返回值为0; 非递归实现 利用层次遍历的算法,设置变量level记录当前节点所在的层数,设置变量last指向当前层的最后一个节点,当处理完当前层的最后一个节点,让level指向+1操作。设置变量...

2016-07-04 09:26:58

阅读数 10324

评论数 2

二叉树的层次遍历----java实现

根据层次遍历的顺序,每一层都是从左到右的遍历输出,借助于一个队列。 先将根节点入队,当前节点是队头节点,将其出队并访问,如果当前节点的左节点不为空将左节点入队,如果当前节点的右节点不为空将其入队。所以出队顺序也是从左到右依次出队。 代码: import java.util.LinkedLis...

2016-07-03 16:44:19

阅读数 18399

评论数 3

二叉树的非递归遍历的解析与实现----java实现

先序遍历 根据先序遍历的访问的顺序,先访问根节点,然后再访问左子树和右子树。对于树中的任意一个节点,都可以看做是一个根节点(也可以看成是一个树),因此可以直接访问根节点,访问完根节点,如果它的左子树不为空,用相同的方法访问它的左子树,直到左子树为空,再访问它的右子树。  对于树中的任意一个节点...

2016-06-30 10:23:37

阅读数 2505

评论数 0

二叉树的递归遍历----java实现

public class Iterator2 { //先序遍历 public void preIterator(BiTree root) { if(root != null) { System.out.print(root.val + "-->&quo...

2016-06-30 09:59:37

阅读数 299

评论数 0

队列----循环队列的实现

为了可以重新利用队列底层数组中已删除元素所占的空间,消除可能出现的“假满”现象,将顺序队列改进为循环队列。 循环队列是首尾相连的队列:当front、rear变量达到底层数组的capacity-1之后,再向前以为就变成0. 入队:(1)判断队列是否已满,已满抛出越界异常            ...

2016-06-17 10:29:17

阅读数 218

评论数 0

链表---双向链表的解析与实现

(1)如果为每个节点保留两个引用prve和next,让prev指向当前节点的上一个节点,让next指向当前节点的下一个节点。此时链表既可以向前依次访问每个节点,也可以向后依次访问每个节点,这种形式的节点称为双向链表。 (2)双向链表的查找    因为双向链表既可以向前搜索也可以向后搜索,当被搜...

2016-06-16 19:34:14

阅读数 318

评论数 0

栈---顺序栈的实现

一、 (1)栈是在一种特殊的线性表,它代表只能在某一端进行插入、删除操作,通常在线性表的尾端进行插入、删除操作. (2)对于栈而言,通常允许插入、删除操作的一端被称为栈顶(top),另一端被称为栈底(buttom). (3)从栈顶压入元素称为进栈(push). (4)从栈顶删除元素称为出栈(pop...

2016-06-16 18:42:21

阅读数 266

评论数 0

队列---链式队列及其实现

一、 (1)采用链式储存结构的队列称为链队列。 (2)队列采用front和rear分别指向队列的头、尾两个节点。 (3)链式队列采用链式结构来保存队列中的所有元素,该队列允许添加无限多个元素,链式队列无队列满的问题。 二、实现 public class LinkQueue { //定义节点类 ...

2016-06-16 18:35:45

阅读数 203

评论数 0

队列---顺序队列及其实现

1)系统采用一组地址连续的存储单元依次存放队列从rear端到front端的所有数据,程序只需要front和rear两个整型变量来记录队列front端的元素索引和rear端的元素索引。  (2)顺序队列的front总是保存着即将出队的元素的索引,顺序队列中的rear总是保存着下一个即将进入队列的元素...

2016-06-16 18:29:04

阅读数 385

评论数 0

剑指offer----矩形覆盖问题的解析与实现

问题: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解析: 此类问题和青蛙跳台阶n个 每次可以跳一个台阶或者两个台阶 一共有多少次跳法 本质是一样的  当n=1,矩阵为2*1,只有横着覆盖1种方法  当n=2,矩...

2016-06-14 14:20:28

阅读数 499

评论数 0

剑指offer----青蛙跳台阶的解析与实现

(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。 (2)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法? 问题一 分析:当n=1,有一种跳法       当n=2,一次跳一个...

2016-06-14 13:08:04

阅读数 3344

评论数 1

剑指offer----斐波那契数列的实现--递归和迭代

1、定义 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …这个数列从第三项开始,每一项都等于前两项之和。 在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*)...

2016-06-13 21:44:50

阅读数 413

评论数 0

栈---链式栈的实现

一、 (1)栈是在一种特殊的线性表,它代表只能在某一端进行插入、删除操作,通常在线性表的尾端进行插入、删除操作. (2)对于栈而言,通常允许插入、删除操作的一端被称为栈顶(top),另一端被称为栈底(buttom). (3)从栈顶压入元素称为进栈(push). (4)从栈顶删除元素称为出栈(pop...

2016-06-13 18:58:34

阅读数 287

评论数 0

线性表--顺序储存结构 java实现

1、线性表:由n(n>=0)个数据元素组成的有限序列。    对于一个非空、有限的线性表,总具有如下特征: (1)总存在唯一的第一个数据元素 (2)总存在唯一的最后一个数据元素 (3)除第一个数据元素外,集合中的每一个数据元素都只有一个前驱的数据元素 (4)除最后一个数据元素外,集...

2016-06-08 09:17:59

阅读数 382

评论数 0

单链表----java语言实现

节点   数据域:存放数据   指针域:存放下一个数据的地址 1、常用操作   查找   插入   删除 查找: (1)按照索引查找index位置上的节点:从头节点head开始依次向下找到第index位置的节点。 (2)找到指定数据的索引位置:查找是否有节点中存放的数据与给定的数据相同,若有则返回...

2016-06-07 15:43:44

阅读数 3727

评论数 1

提示
确定要删除当前文章?
取消 删除
关闭
关闭