很多了学了各种排序算法比如 冒泡排序,快速排序,可书本上仅仅是介绍几个数字的排序,那么如何把它应用到真正的工作中呢。这事实上是一个算法的通用性设计问题。如果了解过C++ STL的人就知道这种设计思想与原理。
我们这里主要以快速排序为例子具体说明(因为我个人现在兴趣在java,所以实现都用java实现,有时间的话我会分别用C与C++实现)。
知识准备:java 语言,快速排序的实现思想
开发环境:eclipse, jdk1.6
我们先简单的回顾一下快速排序的思想(事实上这个算法并不好讲解,总之,我尽力,有不明白的可以留言或者发邮件联系我()):
给定一个数组,int...


- [649320885] 下次学到的时候 再来看(因为现在看不懂~!!~) 03/19 09:23
- [woshihuo12] 看了 好文章。。 顶起。。 03/05 22:49
- [游客] 看了,支持 11/25 13:27
- [lwbfq] 好文 收藏 呵呵 11/06 17:06
- [游客] 谢谢! 11/06 16:31
- [zhouteng] 不错~~~ 10/29 18:46
- [游客] 正如楼上所说,很不错的一篇文章 让我明白了"=="和"equals()"的区别。 10/28 10:53
- [abob] 支持一下~ 10/22 15:03
- [mess] 经典简单排序,掌握之 :-) 10/22 14:31
- [mess] 不错的文章,正学java,收藏了~ 10/22 14:31
[2008-10-21 18:51] 排序算法 通用化设计
阅读全文 |
评论次数(0) |
浏览次数(667) |
所属类型([JAVA]zz~)
[2008-10-21 18:33]
关于Java栈与堆的思考
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是 ,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器 ,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动 态分配内存,存取速度较慢。
3. Java中的数据类型有两种。
一种是基本类型(pr...
2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是 ,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器 ,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动 态分配内存,存取速度较慢。
3. Java中的数据类型有两种。
一种是基本类型(pr...
阅读全文 |
评论次数(8) |
浏览次数(2372) |
所属类型([JAVA]zz~)
[2008-10-21 18:25] 网络蜘蛛Spider简介
网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取...
对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取...
阅读全文 |
评论次数(0) |
浏览次数(676) |
所属类型([JAVA]zz~)
[2008-10-21 18:14] 蓝牙本地和远端发现程序
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.bluetooth.*;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.swing.tree.*;
import javax.swing.event.*;
imp...
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.bluetooth.*;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.swing.tree.*;
import javax.swing.event.*;
imp...
阅读全文 |
评论次数(0) |
浏览次数(650) |
所属类型([JAVA]zz~)
[2008-10-21 18:07] 新手入门必看的30个问题!
1 什么是Java、Java2、JDK?JDK后面的1.3、1.4.2版本号又是怎么回事?
答:Java是一种通用的,并发的,强类型的,面向对象的编程语言(摘自Java规范第二版) JDK是Sun公司分发的免费Java开发工具,正式名称为J2SDK(Java2 Software Develop Kit)。
2 什么是JRE/J2RE?
答:J2RE是Java2 Runtime Environment,即Java运行环境,有时简称JRE。
如果你只需要运行Java程序或Applet,下载并安装它即可。
如果你要自行开发Java软件,请下载JDK。在JDK中附带有J2RE。...
答:Java是一种通用的,并发的,强类型的,面向对象的编程语言(摘自Java规范第二版) JDK是Sun公司分发的免费Java开发工具,正式名称为J2SDK(Java2 Software Develop Kit)。
2 什么是JRE/J2RE?
答:J2RE是Java2 Runtime Environment,即Java运行环境,有时简称JRE。
如果你只需要运行Java程序或Applet,下载并安装它即可。
如果你要自行开发Java软件,请下载JDK。在JDK中附带有J2RE。...
阅读全文 |
评论次数(0) |
浏览次数(641) |
所属类型([JAVA]zz~)
[2008-10-21 18:01] 常用的数据库连接方法
MySQL:
String Driver="com.mysql.jdbc.Driver"; //驱动程序
String URL="jdbc:mysql://localhost:3306/db_name"?useUnicode=true&characterEncoding=UTF-8; //连接的URL,db_name为数据库名,注意修改编码类型
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(...
String Driver="com.mysql.jdbc.Driver"; //驱动程序
String URL="jdbc:mysql://localhost:3306/db_name"?useUnicode=true&characterEncoding=UTF-8; //连接的URL,db_name为数据库名,注意修改编码类型
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(...
阅读全文 |
评论次数(0) |
浏览次数(649) |
所属类型([JAVA]zz~)
[2008-10-21 18:00] Java开发最容易犯的21种错误
1.Duplicated Code 代码重复几乎是最常见的异味了。他也是Refactoring的主要目标之一。代码重复往往来自于copy-and-paste的编程风格。与他相对应OAOO是一个好系统的重要标志。
2.Long method 它是传统结构化的“遗毒”。一个方法应当具有自我独立的意图,不要把几个意图放在一起。
3.Large Class 大类就是你把太多的责任交给了一个类。这里的规则是One Class One Responsibility.
4.Divergent Change 一个类里面的内容变化率不同。某些状态一个小时变一次,某些则几个月...
2.Long method 它是传统结构化的“遗毒”。一个方法应当具有自我独立的意图,不要把几个意图放在一起。
3.Large Class 大类就是你把太多的责任交给了一个类。这里的规则是One Class One Responsibility.
4.Divergent Change 一个类里面的内容变化率不同。某些状态一个小时变一次,某些则几个月...
阅读全文 |
评论次数(0) |
浏览次数(591) |
所属类型([JAVA]zz~)
[2008-10-21 17:54] Java异常处理总结
异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦!
Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟踪异常!这是Java语言设计者的高明之处,也是Java语言中的一个难点,下面是我对Java异常知识的一...
Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟踪异常!这是Java语言设计者的高明之处,也是Java语言中的一个难点,下面是我对Java异常知识的一...
阅读全文 |
评论次数(0) |
浏览次数(571) |
所属类型([JAVA]zz~)
[2008-10-21 17:43] Java语言基础-字符串
正如前面提到的,String 是一个系统定义的类--不是原始类型--它在所有的 Java(TM) 发行版中都包括了的辅助核心包 java.lang 中定义。包 lang 是一个非常基本的包,程序员不需要任何步骤就可以直接使用它的类。快速查阅 java.lang.String ,将会发现有关字符串处理的方法非常之多。
lang 包中还提供了一个补充类 java.lang.StringBuffer 。String 的实例创建后是不可改变的,也就是说,它们不能被修改。用一个等价的术语说,String 操作是 无损的。程序员只能简单的创建字符串,使用它, 当不再需要引用到它时,Java 解释器的...
lang 包中还提供了一个补充类 java.lang.StringBuffer 。String 的实例创建后是不可改变的,也就是说,它们不能被修改。用一个等价的术语说,String 操作是 无损的。程序员只能简单的创建字符串,使用它, 当不再需要引用到它时,Java 解释器的...
阅读全文 |
评论次数(0) |
浏览次数(603) |
所属类型([JAVA]zz~)
[2008-10-21 17:30] 选择排序
选择排序
1.基本思想:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
public class SelectionSorting {
public static void main(String[] args) {
int[] sortArray = { 2, 8, 43, 3, 33, 1, 35, 34, 6, 9 };
int[] resultArray = SelectionSort(sortArray);
for (int i = 0; i < sort...
1.基本思想:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
public class SelectionSorting {
public static void main(String[] args) {
int[] sortArray = { 2, 8, 43, 3, 33, 1, 35, 34, 6, 9 };
int[] resultArray = SelectionSort(sortArray);
for (int i = 0; i < sort...
阅读全文 |
评论次数(0) |
浏览次数(690) |
所属类型(算法&数据结构)