2008-03-14
排序算法
/**
* 选择排序 总比较次数:n*(n-1)/2 不稳定排序
*
* @param e
*/
public void chooseSort(int[] e) {
int t;
for (int i = 0; i < e.length - 1; i++) {
for (int j = i + 1; j < e.length; j++) {
if (e[i] > e[j]) {
t = e[i];
e[i] = e[j];
e[j] = t;
}
}
}
}
/**
* 直接插入排序 最少比较次数:n-1 ,最多比较次数:n*(n-1)/2 特点:原表顺序好排序效率高 稳定排序
*
* @param e
*/
public void insertSort(int[] e) {
int j, t;
for (int i = 1; i < e.length; i++) {
for (t = e[i], j = i - 1; j >= 0 && t < e[j]; j--)// 依次后移
{
e[j + 1] = e[j];
}
e[j + 1] = t;// 插入
}
}
/**
* 冒泡排序 最多比较次数:n*(n-1)/2 稳定排序
*
* @param e
*/
public void bubbleSort(int[] e) {
int t;
for (int i = 0; i < e.length - 1; i++) {
for (int j = 0; j < e.length - i - 1; j++) {
if (e[j] > e[j + 1]) {
t = e[j];
e[j] = e[j + 1];
e[j + 1] = t;
}
}
}
}
/**
* 希尔排序 对直接插入排序的改进
*
* @param e
*/
public void shellSort(int[] e) {
int j, y;
for (int h = e.length / 2; h > 0; h = h / 2) {
for (int i = h; i < e.length; i++) {
y = e[i];
for (j = i - h; j >= 0 && y < e[j]; j -= h) {
e[j + h] = e[j];
}
e[j + h] = y;
}
}
}
/**
* 快速排序 对冒泡排序的改进
*
* @param e
* @param low
* @param high
*/
public void quickSort(int[] e, int low, int high) {
if (low < high) {
int i = low, j = high, t = e[low];
while (i < j) {
// 在右子序列中找到比中间结点键值小或相等的结点,记录该结点下标于j
while (i < j && e[j] > t) {
j--;
}
// 将该结点复制到左子序列
if (i < j) {
e[i++] = e[j];
}
// 在左子序列中找到比中间结点键值大的结点,记录该结点下标于i
while (i < j && e[i] <= t) {
i++;
}
// 将该结点复制到右子序列
if (i < j) {
e[j--] = e[i];
}
}
e[i] = t;// 设置中间结点
quickSort(e, low, i - 1);// 划分左子序列
quickSort(e, i + 1, high);// 划分右子序列
}
}
发表评论
- 浏览: 5511 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
我的相册
forbes_cover
共 13 张
共 13 张
最近加入圈子
链接
- 在项目中整合FCKeditor
- HTML编辑器FCKeditor使用详解
- 将SQL Server 2005中的数据同步到Oracle中
- SQL 连接 oracle 方法
- 异地SQL Server与Oracle数据同步解决方案
- SqlServer下数据库链接的使用方法
- 随机数生成算法
- JavaScript中的正则表达式解析
- 英文自我介绍-简历
- java面试笔试题大汇总
- Lucene:基于Java的全文检索引擎简介
- 浅谈B/S系统安全
- Oracle中的Hash Join祥解
- Hash join算法原理
- oralce学习笔记之异常处理篇
- 转发和重定向的区别
- 外企面试顺利通关全攻略
- 我的google面试经历
- 分析in和exists的区别与执行效率的问题
- 北航BBS上遇小强,贴出来,激励自己
- hibernate实体对象
- Hibernate中实体对象的生命周期
- Hibernate 实体对象的状态及转化
- 易保面试题
- 易保面试,英文翻译题
- Java编译器对于String常量表达式的优化
- Java中static 和final的区别
- SQL Group by 学习
- Oracle SQL99 外连接的写法区别
- Struts开发指南之工作流程
- 从800到了15000 -- 一个非科班三流大学程序员的路程
- SQL 语句中特殊字符的处理及预防sql 注射
- 记一次对20NT安全小组的渗透测试
- E-R图
- 数据库系统设计
- 数据结构学习笔记(转载)
- Spring中WebApplicationContext的研究
- BeanFactory及ApplicationContext的基本原理
- 与高手共事
- 阿里软件招JAVA工程师面试题
- Spring的事件处理机制陷阱
- org.hibernate.FlushMode
- 优化Oracle数据库性能
- SQL语句性能调整原则
- Oracle调优综述
- Oracle DBA优化数据库性能心得体会
- 说说大型高并发高负载网站的系统架构
- web架构设计经验分享
- DDOS
- jBPM开发入门指南
- 轻松实现Apache,Tomcat集群和负载均衡
- 结合Apache和Tomcat实现集群和负载均衡
- Tomcat性能优化笔记
- Tomcat性能调整
- Oracle语句优化规则汇总
- ASP.NET是否可以和JSP公用一个Session或Cookie?
- Leo——感谢生活!
- Oracle 5大ACE谈数据库技术学习
- 如何学习Oracle-eygle的方法经验谈
- 可伸缩性最佳实践:来自eBay的经验
- 关于Oracle学习以及DBA工作机会
- Architecture相关架构的学习
- 架构师书单 2nd Edition
- IT学习力
- 从追MM谈Java的23种设计模式
- SOA架构之性能解决策略之一【引入Cache过程的思考点】
- JAVA的类反射机制
- 基于 OSGi 的面向服务的组件编程
- 利用 Eclipse 开发基于 OSGi 的 Bundle 应用
- peter 果然是 peter
- 了解 Eclipse 插件如何使用 OSGi
- 探索 Eclipse 的 OSGi 控制台
- Java中serialVersionUID的解释
- 扫盲行动之九:Vi编辑器的基本使用方法!
- linux下Vi编辑器命令大全
- vi命令用法
- grep命令详解
最新评论
-
Struts-html标签好用吗?
我觉得就是一种规定和标准,大家都用,一看就明白了。 至于和普通的html相比,我 ...
-- by gitahwang -
Struts-html标签好用吗?
BirdGu 写道javaboy2006 写道抛出异常的爱 写道不喜欢就用< ...
-- by javaboy2006 -
Struts-html标签好用吗?
javaboy2006 写道抛出异常的爱 写道不喜欢就用<%%> 反正有3 ...
-- by 抛出异常的爱 -
Struts-html标签好用吗?
javaboy2006 写道抛出异常的爱 写道不喜欢就用<%%> 反正有3 ...
-- by BirdGu -
Struts-html标签好用吗?
抛出异常的爱 写道不喜欢就用<%%>反正有30%的需求都必须用《%%》才能 ...
-- by javaboy2006






评论排行榜