- 浏览: 1016285 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 ShellSort implements SortStrategy { private int[] increment; /** *利用希尔排序算法对数组obj进行排序 */ public void sort(Comparable[] obj) { if (obj == null) { throw new NullPointerException("The argument can not be null!"); } //初始化步长 initGap(obj); //步长依次变化(递减) for (int i = increment.length - 1 ;i >= 0 ;i-- ) { int step = increment[i]; //由步长位置开始 for (int j = step ;j < obj.length ;j++ ) { Comparable tmp; //如果后面的小于前面的(相隔step),则与前面的交换 for (int m = j ;m >= step ;m = m - step ) { if (obj[m].compareTo(obj[m - step]) < 0) { tmp = obj[m - step]; obj[m - step] = obj[m]; obj[m] = tmp; } //因为之前的位置必定已经比较过,所以这里直接退出循环 else { break; } } } } } /** *根据数组的长度确定求增量的公式的最大指数,公式为pow(4, i) - 3 * pow(2, i) + 1和9 * pow(4, i) - 9 * pow(2, i) + 1 *@return int[] 两个公式的最大指数 *@param length 数组的长度 */ private int[] initExponent(int length) { int[] exp = new int[2]; exp[0] = 1; exp[1] = -1; int[] gap = new int[2]; gap[0] = gap[1] = 0; //确定两个公式的最大指数 while (gap[0] < length) { exp[0]++; gap[0] = (int)(Math.pow(4, exp[0]) - 3 * Math.pow(2, exp[0]) + 1); } exp[0]--; while (gap[1] < length) { exp[1]++; gap[1] = (int)(9 * Math.pow(4, exp[1]) - 9 * Math.pow(2, exp[1]) + 1); } exp[1]--; return exp; } private void initGap(Comparable[] obj) { //利用公式初始化增量序列 int exp[] = initExponent(obj.length); int[] gap = new int[2]; increment = new int[exp[0] + exp[1]]; //将增量数组由大到小赋值 for (int i = exp[0] + exp[1] - 1 ;i >= 0 ;i-- ) { gap[0] = (int)(Math.pow(4, exp[0]) - 3 * Math.pow(2, exp[0]) + 1); gap[1] = (int)(9 * Math.pow(4, exp[1]) - 9 * Math.pow(2, exp[1]) + 1); //将大的增量先放入增量数组,这里实际上是一个归并排序 //不需要考虑gap[0] == gap[1]的情况,因为不可能出现相等。 if (gap[0] > gap[1]) { increment[i] = gap[0]; exp[0]--; } else { increment[i] = gap[1]; exp[1]--; } } } }
发表评论
-
一致性 hash 算法( consistent hashing )<转>
2013-05-23 23:53 865consistent hashing 算法早在 1997 年 ... -
【转】几种经典的hash算法
2013-05-23 23:51 3515文章出处:http://hunteagl ... -
常用hash算法及评测[转]
2013-05-23 23:27 1108RS hash 算法 unsigned int RSHas ... -
在Linux上开发网络服务器的一些相关细节:poll与epoll(转)
2011-05-04 16:23 1114随 ... -
Hash算法大全(java实现)【转】
2011-04-16 13:40 1057Hash算法有很多很多种类。具体的可以参考之前我写的Hash算 ... -
打造最快的Hash表[转]
2011-04-16 00:58 819打造最快的Hash表(暴雪用的MPQ文件) ... -
打造最快的Hash表(和Blizzard的对话)[转]
2011-04-16 00:57 868開元最近学习了一下Blizzard的MPQ文件格式,颇有 ... -
哈希算法(Hash Algorithm)初探[转载]
2011-04-16 00:35 1145不约而同的,几乎所有的流行的hash map都采用了DJB h ... -
暴雪的哈希算法 - [转载]
2011-04-16 00:28 879暴雪公司有个经典的字 ... -
哈希算法
2011-04-15 23:37 937哈希算法将任意长度的 ... -
三种简单排序算法及其对比
2011-04-01 13:32 891三种简单排序算法及其对比 代码: class ... -
递归算法
2011-04-01 13:28 1011用三角数字问题说明递归 Int triangle(int ... -
高级排序
2011-04-01 13:27 810希尔排序: 插入排序的缺点是复制的次数太多,如果数据开始 ... -
冒泡排序算法的JAVA实现
2011-04-01 13:25 735package Utils.Sort; ... -
常用的各种排序算法的JAVA实现
2011-04-01 13:24 855用JAVA把《Data Structure a ... -
快速排序算法的JAVA实现
2011-04-01 13:23 743package Utils.Sort; / ... -
插入排序算法的JAVA实现
2011-04-01 13:21 1074package Utils.Sort; / ... -
选择排序算法的JAVA实现
2011-04-01 13:19 728package Utils.Sort; / ... -
归并排序算法的JAVA实现
2011-04-01 13:18 844package Utils.Sort; / ... -
二分查找算法分析实现
2011-04-01 13:01 1285二分查找又称折半查找,它是一种效率较高的查找方法。 ...
相关推荐
希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:...
内容概要:本文详细介绍了希尔排序(Shell Sort)算法的工作原理及其实现。希尔排序是一种改进的插入排序算法,通过对...阅读建议:建议结合示例代码逐步调试,理解每一步的逻辑,从而更好地掌握希尔排序算法的精髓。
在Java中实现希尔排序,我们可以定义一个希尔排序的函数,接受一个整型数组作为参数,然后按照上述步骤进行排序。代码如下: ```java public class ShellSort { public static void sort(int[] arr) { int len = ...
`Algorithm.java`文件可能包含了这些排序算法的Java实现代码,而`常见排序算法的实现与性能比较.doc`文档则可能详细比较了这些算法的性能和适用场景。`readme.txt`文件可能是对整个项目的简要说明,包括如何运行和...
这里我们主要关注Java实现的排序算法,并结合一个PPT的动画演示来探讨其中的插入排序、直接插入排序和希尔排序。 首先,让我们深入理解插入排序。插入排序是一种简单的排序算法,其基本思想是将未排序的元素逐个...
在提供的文件中,我们可以看到有四种经典的排序算法的Java实现:插入排序、冒泡排序、选择排序以及希尔排序。 **插入排序**: 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据...
Java代码实现希尔排序的过程通常包括以下步骤: 1. 定义增量序列:首先定义一个增量序列,例如初始值为n/2,然后每次减半,直到增量为1。 2. 分组排序:对于每个增量,将数组分为若干个子序列,每个子序列包含增量...
这里我们将深入探讨Java实现的几种内部排序算法,包括希尔排序、快速排序、堆排序、归并排序、冒泡排序、插入排序和选择排序。 首先,希尔排序是一种基于插入排序的算法,通过将原始数组分解成多个子序列来提高效率...
希尔排序(Shell Sort)是一种基于插入排序的快速排序算法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一个增量序列分成若干个子序列,然后分别对子序列进行插入排序,最后再进行一次整体的插入...
### Java实现希尔排序算法 #### 实现原理 希尔排序(Shell Sort)是插入排序的一种高效改进版本,也称为缩小增量排序。它的基本思想是:先将整个待排序的记录序列分割成为若干子序列(由相隔某个“增量”的记录...
希尔排序的Java实现方法ShellSort,简单易懂,适合算法初学者。
【IT面试笔试中的排序算法Java实现】 在IT面试和笔试中,掌握各种排序算法的实现是必不可少的技能。本文将详细介绍几种经典的排序算法,并提供Java语言的实现代码,包括冒泡排序、插入排序、选择排序和快速排序。...
本篇文章将详细讲解标题中提到的六种常见排序算法的Java实现。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,它通过不断交换相邻的逆序元素来逐渐将较大的元素“浮”到数组的前端。在Java中,冒泡排序的基本...
希尔排序的Java实现如下: ```java public class ShellSort implements SortUtil.Sort{ public void sort(int[] data) { for(int i = data.length / 2; i > 2; i /= 2) { for(int j = 0; j ; j++) { insertSort...
该资源提供了一份全面的指南,介绍了如何在Java中实现希尔排序。文档中涵盖了希尔排序的基本概念,包括如何对数组进行排序以及如何在Java中实现希尔排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现希尔...
在`AlgorithmShellSort.java`这个文件中,我们可以预期看到希尔排序的具体实现。通常,Java代码会包含一个名为`shellSort()`的函数,它接收一个整数数组作为参数,并对其进行希尔排序。以下是希尔排序的基本步骤: ...
这里我们主要探讨的是五种不同的排序算法:插入排序、选择排序、快速排序、希尔排序以及冒泡排序,它们都有对应的链表实现。让我们逐一深入理解这些算法。 1. 插入排序(Insertion Sort) 插入排序是一种简单直观...