- 浏览: 140474 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (138)
- java基础 (26)
- 日常工作经验总结 (22)
- SVN学习与使用 (1)
- JBOSS学习与实践 (1)
- webService学习与实践 (4)
- redis学习与实践 (12)
- spring学习与实践 (0)
- hibernate学习与实践 (4)
- Struts2学习与实践 (0)
- mybatis学习与实践 (0)
- SpringMVC学习与实践 (0)
- jfreechart学习与使用 (0)
- javaScript学习与实践 (1)
- linux学习与实践 (4)
- Python学习与实践 (7)
- Oracle学习与实践 (21)
- Mysql学习与实践 (4)
- HTML5+CSS3学习与实践 (0)
- DIV+CSS学习与实践 (0)
- tomcat学习与实践 (1)
- mongodb学习与实践 (1)
- Git学习与实践 (2)
- hadhoop学习与实践 (0)
- shiro学习与实践 (0)
- CMS学习与实践 (0)
- Jmeter学习与实践 (0)
- java测试学习与实践 (2)
- bootstrap学习与实践 (0)
- jquery学习与实践 (0)
- Spring+hibernate+Struts2框架开发CRM项目 (0)
- JVM学习与实践 (0)
- 推荐学习网站 (1)
- 日常工作必备小技能 (4)
- Apache实践 (1)
- dubbo学习与实践 (2)
- Centos7 (6)
- 面试题目集合(收集各大网站) (4)
- 大数据学习 (1)
- 财富本 (2)
- 股票投资学习 (0)
- ZooKeeper (0)
- python切割集合里面相同的元素到一个集合里面 (1)
- 机器学习与深度学习 (1)
最新评论
-
魏叔武:
...
基于UDP协议的Socket编程
public class shellSort { public static void main(String[] args) { // 定义一个数组 int[] shell = { 1, 4, 5, 7, 81, 23, 4, 46, 67, 98, 64, 33, 37, 99, 111, 23, 3, 298 ,9,10,11,12,14,35}; System.out.println("未排序的数组:\n"); for (int m = 0; m < shell.length; m++) { System.out.print(shell[m] + " "); } System.out.println("\n\n排序后:"); // 调用下面的方法 shellSort.sort(shell); for (int n = 0; n < shell.length; n++) { System.out.print(shell[n] + " "); } } public static void sort(int[] shell) { int out, in, tmp; int len = shell.length; int h = 1; while (h < len / 3) // 计算间隔h最大值 h = h * 3 + 1; while (h > 0) { // 能否继续通过缩小间隔h来分割数据列的判定 /* * out为什么从h开始?你分割后的第一子序列应该是这样一个序列,0, h, 2h, 3h, ... * 插入排序的while循环是从1开始的 * ,因为第一个数始终有序,不需要比较,这个需要了解插入排序的算法,所以比较是从第二个数据线,就是数组的第h个下标开始 * out的判定为什么是out < len? 控制数组下标,下面的例子会说道 * * 下面举一个例子来解释 假定有一个10个数据项的数组,数组下标从0 ~ 9 表示 当h = 4时的子序列情况是这样的,以下标表示 * (0 4 8)(1 5 9)(2 6)(3 7) * 我第一次是这么理解的,真对每一组分别进行插入排序(当然也可以这样实现,但是下标不好控制),但是对下面的代码来说这是错误的理解。 * 正确的过程是这样的,外层for循环每次对每一分组的前两个数据项进行插入排序,然后前3个,然后前4个 ... 这个和子序列个数有关 * 排序过程只真对方括号进行 当out = 4时进行如下过程 ([0 4] 8) 当out = 5时([1 5] 9) 当out = * 6时([2 6]) 当out = 7时([3 7]) 当out = 8时([0 4 8]) 当out = 9时([1 5 9]) * h = 4执行完毕,然后h = (h - 1) / 3 = 1开始新的for循环 h = 1时执行过程和h = * 4时一样,不过这时的子数列就是原始的数列,蜕变为一个简单的插入排序,这是数组基本有序,数据项移动次数会大大减少 */ for (out = h; out < len; out++) { // 外层通过out确定每组插入排序的第二个数据项 // 以下代码就是对子序列进行的插入排序算法 tmp = shell[out]; in = out; /* * 比较插入排序while循环的写法,这里的while循环与h有关,所以判定就与h有关,包括 in -= h语句 * while(in > 0 && array[in - 1] > tmp){ array[in] = array[in - * 1]; in--; } array[in] = tmp; */ while (in > h - 1 && shell[in - h] >= tmp) { shell[in] = shell[in - h]; in -= h; } shell[in] = tmp; // for(int i = 0; i < len; i++) // System.out.print(array[i] + " "); // System.out.println(); } // 缩小间隔 h = (h - 1) / 3; } } }
发表评论
-
jdk1.8切换1.7失效问题
2019-12-24 00:02 390项目需要jdk1.7,高了启动不了。会报错。 然而,我安装j ... -
map集合遍历
2017-09-05 16:10 495public class Test{ pu ... -
JVM调优总结(十)-调优方法
2017-07-30 21:45 0http://pengjiaheng.iteye.com/bl ... -
框架整合目标
2017-07-21 21:35 01, spring+hibernate+struts2+my ... -
java利用jxl.jar生成excel文档
2017-06-28 15:05 342java代码: package com.test.read ... -
利用jxl读取excel文件里面的内容
2017-06-28 14:23 436excel里面的内容: ... -
数组与集合互相转化
2017-04-21 20:20 332package com.ray.util; impo ... -
数组转化为集合
2017-04-16 21:07 807package com.ray.test; im ... -
快速排序
2017-03-31 14:32 354public class QuickSort { publ ... -
归并排序
2017-03-31 14:20 384public class mergeSort { ... -
插入排序
2017-03-31 11:55 278插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它 ... -
选择排序
2017-03-31 10:02 431选择排序是一种简单直观的排序算法,数据规模越小越好。唯一的好处 ... -
HTTP协议详解(真的很经典)
2017-03-27 14:14 361[b][b]HTTP是一个属于应用层的面向对象的协议,由于其简 ... -
多线程学习的几篇文章
2017-02-06 17:55 360Java多线程(一)、多线程的基本概念和使用 http:// ... -
java实现可变参数的方法
2017-02-06 17:16 345/** * * * @author Administr ... -
java实现日期的时间的加减
2017-02-06 17:11 1026/** * 时间的加减 * @author Adminis ... -
冒泡排序算法java
2016-12-07 15:22 410今天突然被人问到冒泡排序怎么解决,一时之间自己竟 ... -
FTP上传文件功能
2016-12-06 09:31 377ftp上传功能是很多的应用软件都必备的一个基础功能,特别是CM ... -
java基础之map集合遍历
2016-11-04 16:27 420由于map集合在平时用的时候都是直接get(key)取出单个值 ... -
基于UDP协议的Socket编程
2016-10-23 14:11 1430TCP的可靠保证,是它的 ...
相关推荐
(1) 完成5种常用内部排序算法的演示,5种排序算法为:快速排序,直接插入排序,选择排序,堆排序,希尔排序; (2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,...
一个数据结构作业,对刚刚学习希尔排序知识的同学有用,用C++做的
合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序的C语言实现,原创。
希尔排序 希尔排序希尔排序希尔排序希尔排序希尔排序希尔排序希尔排序
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
希尔排序的源代码; 平台:CentOS release 5.4 (Final) 编译器:GCC 4.3.2
用C++,模板写的 7中排序. 快速排序, 归并排序,插入排序,选择排序,起泡排序,堆排序,希尔排序
数据结构 综合排序 冒泡排序 直接插入排序 快速排序 希尔排序,完整的代码,有每种排序时间的比较
此希尔排序算法采用增量减半的方法来进行数据的排序,内有部分注释
排序算法: 1、插入排序 2、希尔排序 3、冒泡排序 4、快速排序 5、简单选择排序 6、堆排序
希尔排序法,最经典的排序法,但不是容易懂。包括希尔插入排序,希尔交换排序
排序算法很多,下面有基数排序,堆排序,希尔排序,直接插入排序的代码和思路
本实验含有四部分内容——直接插入排序、希尔排序、选择排序、快速排序,在上述内容的基础上,将所有排序算法整合在一个程序中。学生可参考教材中的伪代码。鼓励学生自创新思路,新算法。
就利用汇编版的希尔排序来写了一下超级列表框排序.发现,从取值-排序-显示过程才花了1秒的时间.速度是七号排序的30倍,凌晨孤星-超级列表框排序的3倍.而这个希尔排序模块.只用增加,删减自定义数据类型成员.即可变身另...
7大排序算法(快速排序,冒泡排序,选择排序,归并排序,插入排序,希尔排序,堆排序)实现源码
希尔排序,堆排序,快速排序,简单选择排序,插入排序,冒泡排序
插入排序之希尔排序
了解冒泡,选择,插入,希尔排序 基本的渐进分析
希尔排序(程序).txt希尔排序(程序).txt希尔排序(程序).txt
希尔排序,比较高效的排序算法之一。这是一个例子,一个关于希尔排序的例子。