数据结构及算法
文章平均质量分 63
Joseph-Howard
GitHub: https://github.com/StephenHowardCoding
知乎:http://www.zhihu.com/people/qing-yang-74-85
展开
-
希尔排序
package none009高级排序;//希尔排序public class shellSort { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int maxSize=10; ArraySh arr; arr=ne原创 2014-04-13 19:24:03 · 524 阅读 · 0 评论 -
优先级队列:关键字小的优先处理。数组结构实现的优先级队列
package none002;//优先级队列。。。//关键字小的优先处理。数组结构实现的优先级队列。public class PriorityQueueApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Prior原创 2014-04-12 16:00:21 · 551 阅读 · 0 评论 -
数据结构栈,基于数组
package none002; //数据结构:数组,有序数组,栈,队列,图,二叉树,链表,堆。//栈只允许访问一个数据项,即最后插入的数据项,移除这个数据项后才能访问倒数第二个插入的数据项,以此类推,这种机制在不少环境上是有用的。public class StackApp { /** * @param args */ public static void main(Strin原创 2014-04-12 16:49:34 · 603 阅读 · 0 评论 -
单链表很类似于栈,先插入的后遍历,删除也是删除最后插进来的。但增加的指定查找和指定删除的方法增加了灵活性,可以删除、查找指定key
package none005链表;// 单链表很类似于栈,先插入的后遍历,删除也是删除最后插进来的。//但增加的指定查找和指定删除的方法增加了灵活性,可以删除、查找指定keypublic class SingLinkApp { /** * @param args */ public static void main(String[] args) { // TODO Aut原创 2014-04-12 18:36:09 · 774 阅读 · 0 评论 -
冒泡排序本质:N个数,需要N-1趟,每趟需要比较N-i次(i是指第i趟)如10个数需要比较9+8+7+6+5+4+3+2+1=45次
package none001;//冒泡排序。。。//冒泡排序本质:N个数,需要N-1趟,每趟需要比较N-i次(i是指第i趟)如10个数需要比较9+8+7+6+5+4+3+2+1=45次 //无论何时只要看到一个循环嵌套在另一个循环里面,就可以怀疑这个是算法的运行时间为O(N^2);public class BubbleSortApp { /** * @param args *原创 2014-04-12 15:00:11 · 10489 阅读 · 0 评论 -
按姓名首字母排序,插入排序,并且排序是稳定的。
package none001;//按姓名首字母进行排序,并且排序时稳定的。将插入排序应用在Object对象中。public class ObjectSort { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Array原创 2014-04-12 15:25:33 · 3355 阅读 · 0 评论 -
栈的应用:通过用户输入后缀表达式,利用数据结构栈计算其结果值。
package none004解析计算表达式栈;//通过用户输入后缀表达式,利用数据结构栈计算其结果值。import java.io.*;import java.util.*;public class PostfixApp { /** * @param args */ public static void main(String[] args) throws IOExcept原创 2014-04-12 18:30:49 · 780 阅读 · 0 评论 -
链表,可以进行首尾添加元素,删除
package none005链表;//链表,可以进行首尾添加元素,删除public class FirLasLinkApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub FirstLastList ff=new Fir原创 2014-04-12 18:33:39 · 1023 阅读 · 0 评论 -
数据结构:有序链表
package none006有序链表;public class SortedListApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SortLinkList slist=new SortLinkList();原创 2014-04-13 08:35:14 · 773 阅读 · 0 评论 -
迭代用在有序数组二分法查找中,递归的二分法查找更简洁,但速度可能会慢一点
//把迭代用在有序数组二分法查找中,递归的二分法查找更简洁,但速度可能会慢一点//分治算法方法中包含两个对自身的递归调用,分别对应于问题的两个部分,在二分法查找中就有两个//这样的调用,但是只有一个真的执行。调用哪个取决于关键字的值//后面将会遇到归并排序,她是真正执行了两个递归调用(分成两半的数组分别进行排序)public class BinarySearchApp { /**原创 2014-04-13 19:18:40 · 1043 阅读 · 0 评论 -
数据结构:哈希表
package none011哈希表;import java.util.*;import java.io.*;public class HashTableApp { /** * @param args */ public static void main(String[] args) throws IOException { // TODO Auto-generated m原创 2014-04-13 19:26:06 · 674 阅读 · 0 评论 -
归并排序平均时间复杂度O(NlogN)
package none008第六章递归;//归并排序平均时间复杂度O(NlogN)public class MergeSortApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int maxSize=100; D原创 2014-04-13 19:19:20 · 1924 阅读 · 0 评论 -
递归:最小公倍数和最大公约数求解
package none008第六章递归;//最小公倍数和最大公约数求解public class NecessaryApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub minTimes(2,2);原创 2014-04-13 19:20:01 · 1418 阅读 · 0 评论 -
选择排序本质:内层循环找出最小值并与数组左边的交换,外层循环进行数组从左到右排序,从小到大排序。
package none001;//选择排序和冒泡排序执行了相同的比较次数,但是,选择排序无疑比冒泡排序快很多,因为他执行的交换次数少于冒泡排序,但时间复杂度都为O(N^2) //本质,内层循环找出最小值并与数组左边的交换,外层循环进行数组从左到右排序,从小到大排序。public class SelectSortApp { /** * @param args */ publ原创 2014-04-12 15:48:51 · 1646 阅读 · 0 评论 -
定义数组为有序数组模型,并利用二分法进行查找,删除特定值(缺点:只能删除一个值,若有相同的值,则删除第一个)
package none001;//定义数组为有序数组,并利用二分法进行查找,删除public class OrdApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub OrdArray oa=new OrdArray(15原创 2014-04-12 15:43:46 · 889 阅读 · 0 评论 -
哈希表之链地址法
package none011哈希表2;import java.io.*;import java.util.*; //哈希表之链地址法public class HashChainApp { /** * @param args */ public static void main(String[] args) throws IOException { // TODO原创 2014-04-13 19:26:34 · 898 阅读 · 0 评论 -
堆排序
package none012堆;//堆排序运行的时间复杂度为O(N*logN),尽管他比快速排序略慢,但他比快速排序优越的一点是//它对初始数据的分布不敏感。在关键字值按某种排列顺序的情况下,快速排序运行的时间复杂度可以降到O(N^2)级,然而堆排序对任意排列的数据,其排序的时间复杂度都是O(N*logN);//可以使用同一个数组来存放初始无序的数据,堆以及最后有序的数据,因此,堆排序不需原创 2014-04-13 19:27:57 · 571 阅读 · 0 评论 -
递归:汉诺塔问题
package none008第六章递归;//汉诺塔问题,用递归public class Tower { /** * @param args */ static int disk=3; public static void main(String[] args) { // TODO Auto-generated method stub doTower(disk,'A'原创 2014-04-13 19:21:09 · 627 阅读 · 0 评论 -
快速排序算法
package none009高级排序;//快速排序public class QuickSort1App { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int maxSize=16; ArrayIns arr; a原创 2014-04-13 19:23:12 · 539 阅读 · 0 评论 -
数据结构:树
package none010树;import java.io.*;import java.io.BufferedReader;import java.util.*;public class TreeApp { /** * @param args */ public static void main(String[] args) throws IOException{ /原创 2014-04-13 19:25:16 · 603 阅读 · 0 评论 -
快速排序主体算法
package com.test;public class QuickSort1 { public static void main(String[] args) { int stru[]={15,10,23,34,1,4,5,16,19,13,14,56,67,34,23,12}; ha demo=new ha(); demo.allsort(str原创 2014-04-16 15:42:42 · 659 阅读 · 0 评论 -
高级数组,实现特定值的插入、查找、删除等操作
package none001;public class HighArray { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub superArray sa=new superArray(20); for (int i=0原创 2014-04-12 15:14:53 · 720 阅读 · 0 评论 -
数据结构栈,利用栈实现字符串逆序输出
package none002;import java.util.*;import java.io.*;//数据结构栈,利用栈实现字符串逆序输出public class ReverseApp { /** * @param args */ public static void main(String[] args) throws IOException{ // TODO A原创 2014-04-12 16:43:24 · 10522 阅读 · 0 评论 -
数据结构循环队列,数组实现,循环队列中如果不使用数据项计数字段items,而是通过front和rear计算队列是否为空或满或队列个数,那会很复杂
package none002;//循环队列。。。//循环队列中如果不使用数据项计数字段items,而是通过front和rear计算队列是否为空或满或队列个数,那会很复杂。而且在同一时间里,//当队列为空时与队列为满时,front和rear呈现相同的线性关系,所以有可能是满也有可能是空。public class QueueApp { /** * @param args */原创 2014-04-12 16:40:56 · 2065 阅读 · 0 评论 -
利用栈结构进行括号的匹配
package none003分隔符匹配;//利用栈结构进行括号的匹配import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class BracketApp { /** * @param args */ public static v原创 2014-04-12 17:12:34 · 719 阅读 · 0 评论 -
插入排序是基本排序算法中最好的一种,虽然插入排序也是需要O(N^2)时间,但它比冒泡排序快一倍,比选择排序还要快点。
package none001;//大多数情况下,插入排序是基本排序算法中最好的一种,虽然插入排序也是需要O(N^2)时间,但它比冒泡排序快一倍,比选择排序还要快点。//插入排序本质:每步将一个待排序的元素,按照其排序吗的大小,插入到前面已经排好序的一组元素的适当位置上去,直到元素//全部插入为止。//对于有序或者基本有序的数据来说,插入排序要好得多。当数据有序时,while条件总是假,原创 2014-04-12 15:21:21 · 1267 阅读 · 0 评论 -
数据结构:堆
package none012堆;//堆:1,它是完全二叉树2,它常常用一个数组实现3,满足堆的条件:每一个节点的关键字都大于或等于这个节点//的子节点的关键字//堆是完全二叉树的事实说明了表示堆的数组中没有“洞”。//移除是指删除关键字最大的节点,这个节点总是根节点//堆通常用数组实现,表现为一颗完全二叉树,根节点的下标为0,最后一个节点的下表为N-1;堆提供移除最大的数据项和插入的方原创 2014-04-13 19:27:23 · 527 阅读 · 0 评论