排序算法(二)—归并排序(Merge sort)

Merge sort首先将需要排序的序列拆分成单独的可排序对象,然后将这些可排序对象两两进行归并,直到把它们再合并为一个排序好的序列为止。 Merge sort不是in place排序,但是将Merge sort应用于链表(list)和数组的时候,两者的空间复杂度是不同的。应用于链表的时候空间复...

2015-06-12 10:42:35

阅读数 351

评论数 0

“Network”游戏棋人机对弈的设计与实现(三)—让计算机走出合法步骤

计算机能够判断步骤是否合法后,就可以让计算机走出合法的步骤了。

2015-06-05 15:24:49

阅读数 664

评论数 0

“Network”游戏棋人机对弈的设计与实现(二)—判断步骤是否合法

人机对弈之前,计算机首先需要具备能够判断双方所走的步骤是否合法的功能,这里使用棋盘类GameBoard来实现相关的功能。 首先将对弈的棋盘看成是一个8*8的二维数组,每一个单元格对应一个数组下标,并且单元格中存储该单元格中棋子的颜色。棋盘模型如图所示: 棋盘类的总体代码: packa...

2015-06-05 14:06:52

阅读数 577

评论数 0

“Network”游戏棋人机对弈的设计与实现(一)—游戏规则

“Network”是由Sid Sackson在1992年设计的一种棋类游戏。棋盘是由8 *8=64个格子组成,如图所示: 具体规则如下: (1)总共有两方进行对弈,分别是白方与黑方,每方都有10个棋子,其中最上和最下两排方格是黑方的老家,只有黑方可以把棋子放在这两行。同理最左和最右是白...

2015-06-05 10:18:29

阅读数 513

评论数 0

排序算法(一)—插入排序(Insertion sort)

插入排序是排序算法中比较简单的算法,此算法的最坏时间复杂度是O(n^2),算是比较慢的算法了,其优点是空间上是in place的,只需要占用常量的额外存储空间。 算法的python代码如下: def insertionSort(A): for j in range(len(A)): ...

2015-05-20 11:33:19

阅读数 371

评论数 0

算法的渐近分析

有了算法的具体语句后,我们可以根据语句情况、编程语言、编译器等外部条件的情况算出一个算法的准确时间复杂度,通常这种精确的时间复杂度由于考虑的因素较多,因此表达式比较复杂(如:T(n) = 168n^3+65n^2+n+10000),当外部条件改变时,如实现语言变化、执行算法的计算机不同等,式子中的...

2015-05-15 16:26:01

阅读数 2667

评论数 0

一维Peak finding 算法

介绍一维数组的两种peak finding算法及其复杂度

2015-05-12 10:43:00

阅读数 3063

评论数 0

Android在另一个Activity里怎样finish()掉其他的acticity

static TaskHomeActivity instance; //在被finish掉的acticity中定义instance = this;//在被finish()掉的activity中的OnCreate()方法中写TaskActivity.instance.finish();//在其他的a...

2015-03-24 15:36:33

阅读数 550

评论数 0

双向链表的两种实现与封装性

第一种实现形式是比较普通常见的,链表有一个sentinal节点,由DLinkedListNode,DList类组成,具体实现如下: /* DList.java */ package list; /** * A DList is a mutable doubly-linked list A...

2015-01-30 15:26:27

阅读数 501

评论数 0

PriorityQueue的BinaryHeap实现

PriorityQueue(优先队列)有很多应用场景,例如去听一场音乐会,假如票已经都卖完了,但是还有许多没票的人在排队等是否有人退票,如果有人退票,那么系统就需要把这张票分类给优先级最高的那个排队者(这里的优先级可以是排队的时间,或者交的钱多少等,这里的优先级条件对应priorityqueue中...

2015-01-22 14:21:31

阅读数 734

评论数 0

Java判断一个数是不是素数

[java] view plaincopy import java.util.Scanner;      //质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数   public class PrimeNumber {   ...

2015-01-09 16:10:47

阅读数 528

评论数 0

java中的super关键字

网上很多资料说super指向父类对象,感觉这种说法有误,看看下边的例子: Parent类: public class Parent { public void A(){ System.out.println("This is Parent A"); B(); ...

2014-12-31 15:53:29

阅读数 259

评论数 0

两种双向链表的首项插入与删除效率比较

这里说的两种双向链表是指带“sentinel”与不带“sentinel”的,其中带"sentinel"的多了一个"sentinel"节点,以空间换取了时间。两种链表如下图: 1.不带sentinel的: 下面是构造方法以及在首项插入和删除方法,从代码中可...

2014-12-26 15:21:43

阅读数 649

评论数 0

android应用中去掉标题栏的方法

在android中去掉标题栏有三种方法,它们也有各自的特点。 1.在代码里实现 [java] view plaincopy this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏   ...

2014-12-25 14:57:33

阅读数 283

评论数 0

RunLengthEncoding与普通图像间的相互转换

有些大图像直接存储会很浪费磁盘空间,因此可以将普通图像转换成RunLengthEncoding编码,以压缩存储空间。将图像看成是一个二维数组,数组的每个元素代表图像的一个像素,其中存储了R(Red)、G(Green)、B(Blue)的具体值。RunLengthEncoding就是首先将图像的每行像...

2014-12-23 16:52:16

阅读数 1338

评论数 0

Iterator的作用以及遍历LinkedList双向链表的效率

Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。例如,如果没有使用Iterator,遍历一个数组的方法是使用索引: for(int i=0; i 而访问一个链表(LinkedList)又必须使...

2014-12-23 16:44:02

阅读数 275

评论数 0

android横竖屏切换时应用的生命周期

默认情况下切换横竖屏应用的生命周期先结束再开启,这样会导致程序终端,避免出现这种情况的方法是在AndroidManifest.xml中加入android:configChanges="orientation|keyboardHidden|screenSize".

2014-12-15 10:02:02

阅读数 267

评论数 0

android冒烟测试与单元测试

冒烟测试: adb shell monkey -p -v 单元测试: 在AndroidManifest.xml文件中配置一下信息: 在manifest节点下:             android:name="android.test.Instrumentatio...

2014-12-01 10:07:11

阅读数 832

评论数 0

Sobel图像边界检测算法实现

实现算法有两个核心算法,一是为了处理边界的reflected方法,为了将原图像的边界点reflecte出来。另一个是实现Sobel算法的方法:具体见下边源码: 首先是reflect方法: public PixImage reflect(){ int width = this.getWi...

2014-11-28 09:48:21

阅读数 515

评论数 0

图像模糊算法实现

将一幅图像看成是由像素组成的矩形,每个像素由R(Red),G(Green), B(Blue)三个值组成,图像模糊的原理就是算出每个像素相对于它相邻的多个元素的平均R,G,B值(每个R,G,B值分别处理), 其中边界点有六个相邻元素,内部点有9个相邻元素,顶点有4个相邻元素。可以对图像进行多次模糊。...

2014-11-26 16:53:19

阅读数 470

评论数 0

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