![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 65
dutsoft
这个作者很懒,什么都没留下…
展开
-
二分查找
import java.util.Arrays;import java.util.Scanner;public class BinarySearch { public static int rank(int key,int[] a){ //数组必须是有序的 int low=0; int high=a.length-1; while( low <= high ){ //被原创 2014-05-10 12:49:00 · 508 阅读 · 0 评论 -
堆盘子SetOfStacks
import java.util.ArrayList;import java.util.Random;import java.util.Stack;public class SetOfStcaks{ ArrayList > stackContainer; public SetOfStcaks(){ stackContainer=new ArrayList>(); stackC原创 2014-07-11 10:03:13 · 838 阅读 · 0 评论 -
汉诺塔问题
晚上去哪校招,第一次参加校招,想想还有点小激动。递归解决汉诺塔问题,敲点代码,练习练习。^_^原创 2014-09-09 14:12:29 · 597 阅读 · 0 评论 -
并查集
通常可以用来判断一个图有几个联通块,或是需要建几条路才能将联通块连在一起。原创 2014-05-10 20:45:31 · 1408 阅读 · 0 评论 -
字符串匹配KMP学习
学习KMP原创 2014-05-26 21:02:05 · 718 阅读 · 0 评论 -
双栈算术表达式求值
双栈算术表达式求值原创 2014-05-10 13:31:00 · 2501 阅读 · 0 评论 -
基数排序
基数排序原创 2014-08-01 09:42:52 · 425 阅读 · 0 评论 -
判断两个数是否互素
一、概念判断法 公约数只有1的两个数叫做互质的数。根据互质数的概念。可以对一组数进行判断。如,4和9的公约数只有1,所以它们是互质数。 二、规律判断法 根据互质数的定义,可总结出一些规律,利用这些规律可迅速判断一组数是否互质。 (1)两个不相同的质数一定是互质数。例如,19和13是互质数。 (2)两个连续的自然数一定是互质数。例如转载 2014-04-04 23:37:30 · 13879 阅读 · 0 评论 -
简单的素数筛选法
int i,j; prime[2]=true; for(i=4; i<N; i+=2) { prime[i-1]=true; prime[i]=false; } for(i=3; i <= sqrt(1.0 * N); i+=2){ if(prime[i]==true) {原创 2014-04-04 23:02:55 · 838 阅读 · 0 评论 -
数轴点覆盖
数轴上从左到右有n个点a[0],a[1],…a[n-1],给定一根长度为L的绳子,求该绳子能覆盖几个点。原创 2014-09-08 15:16:46 · 1697 阅读 · 0 评论 -
Rabin-Karp算法学习
Rabin-Karp算法原创 2017-05-22 23:24:16 · 1061 阅读 · 0 评论 -
求一组数的子集
import java.util.*;public class Main { static ArrayList > getSubSets(ArrayList set){ int max=1<<set.size(); ArrayList > allSubSet=new ArrayList>(); for(int i=0;i<max;i++){ allSubSet.add(原创 2014-07-24 20:57:55 · 626 阅读 · 0 评论 -
定容字符串栈
import java.util.Scanner;public class FixedCapacityStackOfStrings { private String[] a; private int N; public FixedCapacityStackOfStrings(int cap){ a=new String[cap]; } public boolean isEmpty原创 2014-05-10 13:56:59 · 1253 阅读 · 1 评论 -
下压堆栈(链表实现)
import java.util.Iterator;import java.util.Scanner;public class Stack implements Iterable { private Node first;// 栈顶 private int N;// 元素数量 // 定义结点的嵌套类 private class Node{ Item item; Node nex原创 2014-05-10 16:27:03 · 959 阅读 · 0 评论 -
泛型定容栈
import java.util.*;//泛型定容栈 //泛型:类型参数化,便于处理不同类型的数据public class FixedCapacityStack { private Item[] a; private int N; public FixedCapacityStack(int cap){ // java中不允许直接创建泛型数组,此处用类型转换来实现 // 这样写原创 2014-05-10 14:17:13 · 1261 阅读 · 0 评论 -
下压栈(LIFO) (能动态调整数组大小的实现)
import java.util.*;// 下压栈(LIFO) 能动态调整数组大小的实现原创 2014-05-10 15:08:16 · 1383 阅读 · 0 评论 -
先进先出队列(链表实现)
import java.util.Scanner;import java.util.Iterator;// 先进先出队列public class MyQueue implements Iterable { private Node first; private Node last; private int N; private class Node{ Item item;原创 2014-05-10 18:45:55 · 2192 阅读 · 0 评论 -
快速排序
学快排的时候参考了这篇博客http://blog.csdn.net/morewindows/article/details/6684558,博主关于快排的讲解通俗易懂,表示感谢。算法原书的快排切分代码写的有点啰嗦,刚看到 j=hi+1那一行还以为写错了,结果后面用的是 a[--j],无语。不过后文,作者自己也说部分代码冗余的,只是为了提醒读者注意访问数组时不要越界。顿时感觉国外的作者写书真的很用心。原创 2014-05-11 16:48:51 · 814 阅读 · 0 评论 -
希尔排序
public class Sort { public static void swap(Comparable[] a,int i,int j){ Comparable temp=a[i]; a[i]=a[j]; a[j]=temp; } public static boolean less(Comparable v,Comparable w){ return v.compar原创 2014-05-11 13:50:25 · 612 阅读 · 0 评论 -
归并排序
书看到归并排序这一部分的时候,感觉java中乱七八糟的接口、基本类型和泛型输入输出的问题真是影响对算法的理解,还是直接用C++实现比较直接。#include using namespace std;// 这样写可能效率不咋地,但思路比较清晰void merge(int a[],int low,int mid,int high){ int l=mid-low+1; i原创 2014-05-11 14:59:09 · 676 阅读 · 0 评论 -
最大堆
swim() 表示上浮:作者将其比喻为黑帮新人(插入的新元素),能力高(值大的)的被提升,将能力不够的前辈踩在脚下,直到遇到一个更强的领导。sink ()表示下沉:比喻为黑帮领导,能力不行的或退休的(删除)就被下属取代。每次帮派有新人加入,或有领到退休,帮内都必须重新论资排辈。这个比喻还是挺有意思的。原创 2014-05-11 19:57:15 · 697 阅读 · 0 评论 -
线性表的顺序存储
#include #include using namespace std;#define SIZE 100struct SqList{ int data[SIZE]; int length; SqList() { length=0; }};int GetElem(SqList *l,int i){ if(l->l原创 2014-05-09 14:36:55 · 476 阅读 · 0 评论 -
Prim算法学习
#include #include #include using namespace std;#define N 10005#define INF 1000000000int a[N][N];bool vis[N];int dis[N];int ans;int n;bool Prim(){memset(vis, 0, sizeof原创 2014-04-08 21:49:58 · 819 阅读 · 0 评论 -
Dijkstra学习
#include #include #include #include #include #include using namespace std;#define MAXVER 1005#define INF 100000000int n, m, e;int a[MAXVER][MAXVER];int dis[MAXVER];bool visited[MAXVER];v原创 2014-04-07 14:37:51 · 810 阅读 · 0 评论 -
图的基本实现
开始学习图的基本算法,《大话数据结构》一书写的很不错,推荐之。算法导论上的图例子举得不好,感觉把简单的给弄复杂了。#include #include #include #define MAXVER 1024#define INF 65535bool visited[MAXVER];#define TRUE 1#define FALSE 0;using namespace std原创 2014-04-06 14:16:01 · 918 阅读 · 0 评论 -
链表增删节点
#include #include using namespace std;struct node{ int data; node* next=NULL; //结构体内带函数是C++语法 C语言中不能这样用 node(){ } node(int x,node* p=NULL){ data = x; next = p; }};class List{private:原创 2014-04-02 19:54:42 · 757 阅读 · 0 评论 -
二叉查找树
import java.util.Random;public class BST,Value> { private Node root; private class Node{ private Key key; private Value val; private Node left,right; private int N; public Node(Key key原创 2014-05-28 18:02:17 · 716 阅读 · 0 评论