算法与数据结构
ningbupt
责任、梦想
展开
-
单链表的建立程序
#include #include #include #include //using namespace std;typedef struct node{ int data; node * next; }*linklist;void creat(linklist head,int a){ linkli原创 2011-06-22 11:06:00 · 1000 阅读 · 0 评论 -
归并排序 (java版本的)
import java.util.*;public class MergeSort { /** * @param args */ static void mergeSort(int [] a,int [] temp,int left,原创 2011-10-03 12:12:01 · 1029 阅读 · 0 评论 -
编程之美读书笔记 分层遍历二叉树
这个代码基本是照着书本的思想写的,其实就是用容器数组类这样的一个数据结构,比使用队列简单多了,单纯的使用队列的话,会繁琐一些。这个程序很巧妙精炼,如果是自己不看书手动写代码,估计还会出现许多小的bug,有时间脱离课本,自己写写这个代码。通过写这个程序,还锻炼了自己使用容器类a原创 2011-10-02 19:53:12 · 893 阅读 · 0 评论 -
网上的一道搜狗笔试题
一个长度为n的数组a[0],a[1],...,a[n-1]。现在更新数组的名个元素,即a[0]变为a[1]到a[n-1]的积a[1]变为a[0]和a[2]到a[n-1]的积,...,a[n-1]为a[0]到a[n-2]的积。程序要求:要求具有线性复杂度。不能使原创 2011-10-04 15:23:42 · 2357 阅读 · 1 评论 -
快速排序(java版)
今天心血来潮,想练练自己的基本功,就写了快排程序,唯一注意的一点就是System.out.print(a[i]+‘ ’);如果a[i]为整数,那么这个输出的结果将是空格的ascII码,空格与字符串相连接时才会输出空格。import java.util.*;public原创 2011-10-03 11:55:22 · 826 阅读 · 0 评论 -
编程之美读书笔记:买票找零
问题描述见最后:今天下午试图通过递归的方式写出一个式子,比如我自己想到的是设behind(Bi),between(Bi,B(i+1))分别表示Bi后边的A的个数,和Bi,B(i+1)之间A的个数,但是到最后通过列式子发现递归式子会写很多,通过for循环可以写出来,但是每一个都要写原创 2011-10-03 18:20:20 · 2201 阅读 · 1 评论 -
堆排序实现
#include #include void HeapAdjust(int a[],int s,int n)//大顶堆 { int temp=a[s]; for(int j=2*s;j<=n;j*=2) {原创 2011-10-03 12:13:49 · 1081 阅读 · 1 评论 -
编程之美读书笔记3:3.10分层遍历二叉树
按照编程之美课本上给出的c语言写法,转化成了java语法。以前觉得层次的话都是用队列,看到这个题之后,才知道用递归的方法解也行,开阔了思路。import java.util.Scanner;class Tnodee{ int data; Tnodee原创 2011-10-02 18:28:46 · 994 阅读 · 0 评论 -
中序遍历非递归实现(java实现)
import java.util.*;class Node{ int data; Node lchild; Node rchild; Node(int a) { data=a; lchild=null; rchild=null; }}public原创 2011-10-04 10:56:17 · 2588 阅读 · 0 评论 -
编程之美 最短摘要解法二
跟书上这道题目类似的是百度的一道笔试题:“一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。”第一次拿到这个题,忘记了手尾相连,题意都看错了,(在没有首尾相连的情况下解决方法是我的方法是求出每个结点为尾的原创 2011-10-07 20:10:49 · 2511 阅读 · 1 评论 -
编程之美笔记 3.8 求二叉树中节点的最大距离
以下代码已经调试通过,其中涉及到一些细节的注释,是自己在写程序曾经出现错误的地方,引以为戒!看下注释能了解到自己曾经在哪里出过错。尤其是getMaximunDistance()方法中做的注释对自己还是很有利的,即使用递归方法时,做退出的情况,我一开始分成了多种情况,root.原创 2011-10-02 13:16:52 · 1236 阅读 · 0 评论 -
数据结构 笔记
<br />stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);其中由FileShare.read修改为FileShare.ReadWrite,可以使得同时进行读写。经过测试,默认情况下是不允许同时读写的,如果不改或者是不加是出现异常的,即不允许。同时读写时不会发生异常,这个我已经经过测试。如果不改就会出现异常,无论是写的线程先启动,然后再启动读线程,还是先读后写,都会出现异常,这个我已原创 2010-09-03 17:54:00 · 1825 阅读 · 0 评论 -
《编程之美》读书笔记: 3.3 计算字符串的相似度(java实现)
我写的动态规划的代码如下,但是写的有点繁琐,如果数组a[Alength+1][Blength+1],就比较简单,不用单独计算array[0][0]l了,原因是空字符和某几个字符也是可以相似的,这样的话代码会简单些。递归代码由于时间关系没有写。public class原创 2011-10-05 19:45:27 · 1046 阅读 · 0 评论 -
胜者树和败者树的理解
就相当于一个武林高手在山顶,下面是几个手下败将,如果新来一个人(就是待归并的树的一个元素),先去试试能不打败高手下边的手下败将,如果打过了,再去参加下一轮比武,直到跟武林高手对决。败者树比胜者树高明的地方时节点存放了败者,这样新来一个人就直接能找到跟哪个人比武。原创 2013-01-03 15:46:02 · 1910 阅读 · 1 评论 -
编程之美 2.1求二进制数中1的个数
以下罗列了书上的3种解法,第4,5种方法是用空间换时间的方法,如果查找次数很频繁,建议采用空间换时间的方法。public class count1 { /** * @param args */ public static int count0(by原创 2011-10-06 19:07:46 · 1209 阅读 · 0 评论 -
编程之美读书笔记3.7队列中取最大值操作的问题 解法2
1)堆筛选算法HeapAdjust 的一个前提是假设的是左右两个子树都是最大堆或最小堆了,也就是只有根节点是无序的。通过这道题比较深刻理解了堆排序的算法。2)向堆中插入一个元素的方法如何在一个已调整好的最大堆中添加一个元素呢?想到的一个方法就是将该元素置于最后位置,然后对原创 2011-10-05 10:02:32 · 1165 阅读 · 0 评论