自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 数据结构--排序之快速排序(分治,递归)

上代码:/* * 快速排序O(NlogN) 对C++和Java的基本类型特别有用 适用于大量输入 对少量比如20个输入时插入排序比较好 * 包含 找出枢纽元(也就是分割的关键字),分割数组,再递归的进行 这几个部分 注意虽然是递归但这都是在一个数组上直接操作 * 不断进行正向的调用 */ //快速排序的驱动程序 public sta

2015-03-26 15:58:47 1084

原创 数据结构--排序之归并排序(分治 递归 合并典型案例)

归并排序的运行时间是O(NlogN)归并排序是用于分析递归技巧的典型案例与其他的O(NlogN)排序算法比较 比如堆排序 归并排序的运行时间严重依赖比较时间和数组和临时数组中移动元素的开销,这些开销是和语言相关的。比如进行一次泛型排序,使用Comparactor时。归并排序使用流行算法中最少的比较次数,因此是使用Java的通用排序算法的上好选择。事实上,他就是java标准类库中泛型排序所使

2015-03-25 21:36:20 741

原创 数据结构--排序之堆排序

一 :分析部分堆排序是一种选择排序,其时间复杂度为O(nlogn)。堆的定义  n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。  情形1:ki 2i 且ki 2i+1 (最小化堆或小顶堆)  情形2:ki >= k2i 且ki >= k2i+1 (最大化堆或大顶堆)  其中i=1,2,…,n/2向下取整;

2015-03-25 15:13:29 1150

原创 数据结构--排序之希尔排序

希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因

2015-03-24 13:13:44 808

原创 数据结构--排序之插入排序

/* * 插入排序O(N2)的运行时间 * 思想是:若数组长度为N 那么把数组序号从1到N-1的值依次往前进行比较 这里需要一个for循环 * 注意每个数在比较的时候它前面的数据都是已经排好序号的(因为从序号为1时就开始排序了) * 注意我们这里用类似堆中下浮和上浮的交换方法 把需要交换的数据拿出来 和前面的数据依次进行比较 如果拿出来的数据小了 这个当

2015-03-24 13:10:28 579

原创 数据结构--优先队列(堆)的实现

1 优先队列是至少允许下列两种操作的数据结构:insert和deleteMin操作,insert相当于入队,deleteMin则相当于在优先队列中的出队。2 我们使用二叉堆(这里也就叫做堆),来实现这种数据结构。堆有两个重要性质,其一是结构性,是一颗完全二叉树(高为h的二叉树 有2exp(h)到2exp(h+1)-1个节点)其二是对序性质,如果我们考虑任意一个字树也是一个堆,那么任意节点应

2015-03-22 13:37:32 801

原创 数据结构--解决散列冲突,平方探测法

上代码:package com.itany.quadraticprobing;import java.util.LinkedList;import java.util.List;//使用平方探测的散列表 来解决散列时的冲突问题public class QuadraticProbingHashTable{ private static final int DEFAULT_

2015-03-19 20:47:29 2143 1

原创 数据结构--解决散列冲突,分离链接法

散列表的实现常常叫做散列。散列是一种用以常数平均时间执行插入,删除,和查找的技术。但是那些需要元素信息排序的树操作不会得到支持。因此例如findMax,findMin以及排序后遍历这些操作都是散列不支持的。 如果当一个元素被插入时与已经插入的元素散列(比如散列表的数组序号,很多元素插入到同一个数组序号中),那么就会产生一个冲突,这个冲突需要消除。解决冲突的办法有两种:1 分离链接法

2015-03-19 13:15:21 1080

转载 数据结构--B树、B+树、B*树,R 树

转载自:http://blog.csdn.net/v_JULY_v/article/details/6530142/原作者:v_JULY_v作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。

2015-03-17 16:18:39 681

原创 数据结构--AVL树的insert()的Java实现

一个AVL树是其每个节点的左子树和右子树的高度差最多差1的二叉查找树;AVL树是一种最古老的平衡查找树上代码:package com.itany.avlshu;public class AVLTree>{ private static class AvlNode { private int height; private T ele

2015-03-16 13:08:22 949

原创 数据结构--二叉查找树的java实现

上代码:package com.itany.erchachazhaoshu;public class BinarySearchTree>{ //定义二叉查找树的根节点 每一个查找二叉树都有一个自己的root 节点 root外界看不到 private BinaryNode root; public BinarySearchTree() { r

2015-03-13 16:53:01 698

原创 数据结构--尾递归

递归是指函数直接或间接地调用自己。尾递归是指所有递归形式的调用,一定是发生在函数的末尾。举例来说,这是在 C 语言中用循环来计算 1 ~ 100 的和:int sum = 0;for (int i = 1; i 100; ++i) { sum += i;}要改写成递归形式的话,它的定义如下:sum(n) = sum(n - 1) + n (n > 0)

2015-03-10 21:32:15 628

原创 数据结构--LinkedList的java实现

上代码:package com.itany.MyLinkedList;import java.util.ConcurrentModificationException;import java.util.Iterator;import java.util.NoSuchElementException;public class MyLinkedList implements Itera

2015-03-10 10:44:44 556

转载 深入java--嵌套类和内部类

转载自:http://www.cr173.com/html/18411_1.htmljava程序语言允许你在一个类里面再声明另一个类,这样的类成为嵌套类,说明如下:class OuterClass { ... class NestedClass { ... }}术语:嵌套类分为两种:静态或非静态。嵌套类声明为static称为静态嵌套

2015-03-08 17:30:00 448

原创 数据结构--ArrayList的Java实现

上代码:package com.itany.MyArrayList;import java.util.Iterator;public class MyArrayList implements Iterable{ private static final int DEFAULT_CAPACITY=10;//默认数组容量大小 private int theSize;//集

2015-03-08 15:21:26 610

原创 数据结构--remove方法对LinkedList类的使用注意

直接上代码:package com.itany.linkedList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class Test{ /* * remove方法对LinkedList类的使用注意 * 将表中所有值为偶数的项删除

2015-03-05 22:09:32 3919

原创 数据结构--对固定数组的扩大

很简单,上代码:package com.itany.array;public class Test{ public static void main(String[] args) { int[] array=new int[10]; int[] newArray=new int[array.length*2]; f

2015-03-05 18:59:44 451

原创 数据结构--求最大公约数(欧几里得算法)

package com.itany.oulijide;public class Test{ public static void main(String[] args) { int result=gcd(50,15); System.out.println(result); } //默认m>n,如果m<n,那么第一次迭

2015-03-05 12:45:57 945

原创 数据结构--二分法查找(内含 ? super T的使用分析)

根据年龄查找对应的人,直接上代码,有几种代码,只是在泛型时有些区别,需注意:代码一:T 使用自己的compareTopackage com.itany.gen.superr;public class Person implements Comparable{ private int age; public Person(int age) { t

2015-03-05 10:17:55 601

原创 数据结构--最大子序列和(使用分治策略和递归)

例如对于输入:-2,11,-4,13,-5,-2答案为20   为方便起见 若所有整数为负数 则最大子序列和为0算法一:分治策略:其想法是把问题分成大致相等的子问题,然后递归的对他们求解,这是“分”的部分,“治”是将两个子问题的解修不到一起并作少量附加工作,最后得到整个问题的解。对于这个问题,可以分为三个部分,一个是最大子序列可能出现在输入数据的左半部分,第二种是出现在数据的右半部

2015-03-04 12:35:42 871

原创 数据结构--递归 协变 泛型方法 类型界限

一 递归:使用递归必须遵循四个基本法则:1 基准情形必须要有某些基准情形,它无需递归就能解出来2 不断推进对于那些需要递归求解的情形,每一次递归调用都必须是状况朝着一种基准状况推进3 设计法则假设所有的递归调用都能运行4 合成效益法则在求解同一问题时,切勿在不同的递归中做重复性的工作。比如在计算斐波那契数列时,使用递归并不好,原因正是由于第四条法则,会重复计算。

2015-03-02 10:43:13 725

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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