- 浏览: 986726 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
package Utils.Sort; /** *快速排序,要求待排序的数组必须实现Comparable接口 */ public class QuickSort implements SortStrategy { private static final int CUTOFF = 3; //当元素数大于此值时采用快速排序 /** *利用快速排序算法对数组obj进行排序,要求待排序的数组必须实现了Comparable接口 */ public void sort(Comparable[] obj) { if (obj == null) { throw new NullPointerException("The argument can not be null!"); } quickSort(obj, 0, obj.length - 1); } /** *对数组obj快速排序 *@param obj 待排序的数组 *@param left 数组的下界 *@param right 数组的上界 */ private void quickSort(Comparable[] obj, int left, int right) { if (left + CUTOFF > right) { SortStrategy ss = new ChooseSort(); ss.sort(obj); } else { //找出枢轴点,并将它放在数组最后面的位置 pivot(obj, left, right); int i = left, j = right - 1; Comparable tmp = null; while (true) { //将i, j分别移到大于/小于枢纽值的位置 //因为数组的第一个和倒数第二个元素分别小于和大于枢纽元,所以不会发生数组越界 while (obj[++i].compareTo(obj[right - 1]) < 0) {} while (obj[--j].compareTo(obj[right - 1]) > 0) {} //交换 if (i < j) { tmp = obj[i]; obj[i] = obj[j]; obj[j] = tmp; } else break; } //将枢纽值与i指向的值交换 tmp = obj[i]; obj[i] = obj[right - 1]; obj[right - 1] = tmp; //对枢纽值左侧和右侧数组继续进行快速排序 quickSort(obj, left, i - 1); quickSort(obj, i + 1, right); } } /** *在数组obj中选取枢纽元,选取方法为取数组第一个、中间一个、最后一个元素中中间的一个。将枢纽元置于倒数第二个位置,三个中最大的放在数组最后一个位置,最小的放在第一个位置 *@param obj 要选择枢纽元的数组 *@param left 数组的下界 *@param right 数组的上界 */ private void pivot(Comparable[] obj, int left, int right) { int center = (left + right) / 2; Comparable tmp = null; if (obj[left].compareTo(obj[center]) > 0) { tmp = obj[left]; obj[left] = obj[center]; obj[center] = tmp; } if (obj[left].compareTo(obj[right]) > 0) { tmp = obj[left]; obj[left] = obj[right]; obj[right] = tmp; } if (obj[center].compareTo(obj[right]) > 0) { tmp = obj[center]; obj[center] = obj[right]; obj[center] = tmp; } //将枢纽元置于数组的倒数第二个 tmp = obj[center]; obj[center] = obj[right - 1]; obj[right - 1] = tmp; } }
发表评论
-
一致性 hash 算法( consistent hashing )<转>
2013-05-23 23:53 833consistent hashing 算法早在 1997 年 ... -
【转】几种经典的hash算法
2013-05-23 23:51 3455文章出处:http://hunteagl ... -
常用hash算法及评测[转]
2013-05-23 23:27 1064RS hash 算法 unsigned int RSHas ... -
在Linux上开发网络服务器的一些相关细节:poll与epoll(转)
2011-05-04 16:23 1086随 ... -
Hash算法大全(java实现)【转】
2011-04-16 13:40 1024Hash算法有很多很多种类。具体的可以参考之前我写的Hash算 ... -
打造最快的Hash表[转]
2011-04-16 00:58 787打造最快的Hash表(暴雪用的MPQ文件) ... -
打造最快的Hash表(和Blizzard的对话)[转]
2011-04-16 00:57 839開元最近学习了一下Blizzard的MPQ文件格式,颇有 ... -
哈希算法(Hash Algorithm)初探[转载]
2011-04-16 00:35 1120不约而同的,几乎所有的流行的hash map都采用了DJB h ... -
暴雪的哈希算法 - [转载]
2011-04-16 00:28 840暴雪公司有个经典的字 ... -
哈希算法
2011-04-15 23:37 902哈希算法将任意长度的 ... -
三种简单排序算法及其对比
2011-04-01 13:32 858三种简单排序算法及其对比 代码: class ... -
递归算法
2011-04-01 13:28 976用三角数字问题说明递归 Int triangle(int ... -
高级排序
2011-04-01 13:27 775希尔排序: 插入排序的缺点是复制的次数太多,如果数据开始 ... -
冒泡排序算法的JAVA实现
2011-04-01 13:25 703package Utils.Sort; ... -
常用的各种排序算法的JAVA实现
2011-04-01 13:24 823用JAVA把《Data Structure a ... -
希尔排序算法的JAVA实现
2011-04-01 13:21 816package Utils.Sort; / ... -
插入排序算法的JAVA实现
2011-04-01 13:21 1040package Utils.Sort; / ... -
选择排序算法的JAVA实现
2011-04-01 13:19 685package Utils.Sort; / ... -
归并排序算法的JAVA实现
2011-04-01 13:18 810package Utils.Sort; / ... -
二分查找算法分析实现
2011-04-01 13:01 1241二分查找又称折半查找,它是一种效率较高的查找方法。 ...
相关推荐
一个简单的快速排序算法,用JAVA编写的
详细解释了快速排序的java实现.里面有代码,还有注释说明
实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法的java实现。
快速排序算法实现,随机输入一组数有序输出,用java语言实现
快速排序算法的Java实现。下载后把Package信息稍作修改即可运行。
快速排序 基于java实现的快速排序算法 Demo
常见排序算法java实现,包括快速排序,归并排序,堆排序三个常用nlogn复杂度的算法
快速排序算法java实现,此程序所排序数组在程序中给出,没有输入。
冒泡排序、快速排序、直接插入排序、简单选择排序 等经典算法的思想介绍,大白话简单易懂。并用java实现。代码拿去即可用,不需做任何修改! 部分内容: /** * 快排:O(n*logn);如果是从小到大排序; * 思想:选...
java 快速排序 折半查找的界面实现 (递归与分治法)
内部排序算法的实现和测试代码,包括希尔排序、快速排序、堆排序、归并排序、冒泡排序、插入排序、选择排序等一些列排序算法。
常见排序算法的实现与性能比较JAVA 问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 实验要求: A. 在随机产生的空间大小分别为 N = 10, 1000,10000,100000 的排序样本(取值为[0...
java实现的多种排序算法,包括冒泡排序,快速排序,选择排序等
在Java实现中,快速排序算法通过quickSort方法接收待排序数组和左右索引作为参数,递归地调用partition方法进行数据划分,并分别对划分后的子序列进行排序。partition方法选择数组中的一个元素作为基准,通过比较和...
用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。 插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm....
java实现的快速排序算法
采用java语言编写的可扩展快速排序算法。 资源简介: Array.java(数组接口), SortArray.java(Array的实现类,可扩展), SortVector.java(承载Array,并使用快速排序算法对数组进行排序) SortTest.java(测试类...
多种排序查找算法的java实现源码,包括选择排序,冒泡排序,改进版冒泡排序,二分查找,归并排序等等
java 常见排序算法的实现 有冒泡、选择、快速、比较等常见的排序算法 还包括二叉树的实现