算法设计与分析基础
钢琴冰指
这个作者很懒,什么都没留下…
展开
-
算法设计与分析基础-3.1、选择排序、冒泡排序
选择排序public class selectSort { private static void sort(int[] a) { int i, j,min; int tmp; for (i = 0; i < a.length-1; i++) { min=i; for (j = i + 1; j < a.length; j++) if(a[min]>a[j]原创 2013-04-26 13:59:52 · 759 阅读 · 0 评论 -
算法设计与分析基础-8.4、背包问题和记忆功能
时间效率空间效率都是O(nW),n是物品个数,W是背包重量 采用自顶向下,它只对必要的子问题求解并且只解一次。 import java.util.ArrayList; public class MFKnapsack { private int n; private int W; private int[] Weights; private int[] Values; pri原创 2013-07-02 10:37:14 · 2411 阅读 · 0 评论 -
算法设计与分析基础-8.3、最优二叉查找树
空间效率O(n2),时间效率O(n3) 当1 public class OptimalBST { private int nodeNum = 4; private int[][] R; private double[][] C; private double[] p; public OptimalBST(int nodeNum, double[] a) { super();原创 2013-07-01 15:53:37 · 1530 阅读 · 0 评论 -
算法设计与分析基础-8.2、warshall算法和Floyd算法
求传递闭包 warshall算法时间复杂度O(n3) 传递闭包:一个n阶布尔矩阵T={i,j},如果从第i个顶点到第j个顶点之间存在一条有效的有向路径,则T[i][j]=1,否则T[i][j]=0 完全最短路径问题要求找到从每个顶点到其他所有顶点之间的距离 Floyd算法通过一系列n阶矩阵来计算一个n顶点加权图的距离矩阵 import java.util.ArrayList; p原创 2013-06-24 09:04:36 · 885 阅读 · 0 评论 -
算法设计与分析基础-7.2、字符串匹配中的输入增强技术,Horspool算法
平均效率O(n) import java.util.HashMap; public class Horspool { public static final char[] CHAR_TABLE = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's'原创 2013-06-21 11:18:28 · 1765 阅读 · 0 评论 -
算法设计与分析基础-7.1、分布计数排序
import java.util.Arrays; public class DistributionCounting { public static int[] distributionSort(int a[], int l, int u) { int i = 0, j = 0; int d[] = new int[10]; int s[] = new int[10]; for原创 2013-06-21 09:58:46 · 1559 阅读 · 0 评论 -
算法设计与分析-4.1、归并排序
java实现的,递归的就写了这么长时间,非递归的就更不好想了,不过硬着头皮也要写出来 不加注释了,理解的基础上记住,反复看 看递归的方法看了半天,找了n个方法看,终于看懂了一个有详细解释的,通过写非递归的方法让我认识到了几点: 一、非递归太难了!!看不出来就一步一步的画图,先选择简单的输入,在选择其他输入 二、看同样一种算法,看会其中一种就行的,别看看这个又看看那个的,今天就耽误了一天的时原创 2013-04-19 09:25:45 · 764 阅读 · 0 评论 -
算法设计与分析基础-4.2、快速排序
java的也要实现,partition理解了很久,做这种题,不理解的时候画出图来! 方法一、 #include "stdafx.h" int a[100]; void quickSort(int a[],int l,int h) { if(l>=h)return; int i,j,key; i=l; j=h; key=a[i]; while(i<j) { while(ikey)j--; if原创 2013-03-31 22:47:37 · 850 阅读 · 0 评论 -
算法设计与分析基础-5.1、插入排序
插入排序 import java.util.Arrays; public class insertSort { private static void sort(int[] a) { int i,j,v; for(i=1;i<a.length;i++) { v=a[i]; j=i-1; while((j>=0)&& (a[j]>v )) { a[j+1]=a[j]原创 2013-04-26 14:01:00 · 704 阅读 · 0 评论 -
算法设计与分析基础-6.4、堆和堆排序
堆排序递归实现,用java,最后两个函数是为了输出好看 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class BuildMaxHeap { private static int[] sort= new int[] { 3, 4, 43, 5, 1, 6, 23, 55,原创 2013-04-15 22:25:32 · 814 阅读 · 0 评论