`
tw5566
  • 浏览: 450254 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

算法学习(11)--高级排序之希尔排序

阅读更多
package com.tw.ds.highsort;

/**
 * 
 * <p>
 * 算法学习---高级排序
 * 希尔排序算法
 * 基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。
 * 所有距离为dl的倍数的记录放在同一个组中。
 * 先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序, 
 * 直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。
 * 该方法实质上是一种分组插入方法。
 * </p>
 * @author tangw 2010-11-26
 *
 */
public class ShellSortMain {
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//数据变量
		int [] ardata = {2,5,1,6,8,0,9,100,2};
		//排序
		shellSort(ardata);
		//输出
		for(int i=0;i<ardata.length;i++){
			System.out.println("i="+i+"  v="+ardata[i]);
		}
	}
	
	/**
	 * <p>希尔排序方法</p>
	 * @param data
	 */
	public static void shellSort(int []data){//递减
		int j;
		for(int count=data.length/2;count>0;count/=2){
			for(int y=count;y<data.length;y++){
				int temp = data[y];
				for(j=y;j>=count && temp>data[j-count];j-=count){
					data[j] = data[j-count];
				}
				data[j] = temp; 
			}
		}
	}//end method shellSort
}


/**
 * 排序前数据:2,5,1,6,8,0,9,100,2
 * 排序后数据: 100,9,8,6,5,2,2,1,0
 * 
 * 
 * */

 

分享到:
评论

相关推荐

    [C++算法入门]-希尔排序

    该资源是一个入门级别的C++算法练习,旨在帮助读者学习和理解希尔排序算法。文档中包含了希尔排序的基本原理和实现方法,并提供了详细的代码示例和解析。 通过学习和完成这个练习,读者将能够掌握希尔排序算法的...

    Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法

    Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...

    C#实现希尔排序算法.

    C#实现希尔排序算法.大家可以学习学习。

    python常用排序算法汇总

    # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() #计数排序 # sort.quickSort() #快速排序 该排序算法把...

    【数据结构考研】九种内部排序算法代码及排序过程图示

    本资源包含《数据结构》考研的九种内部排序算法考点的算法代码及排序过程图示,以表格、图文方式详细讲解每一种...适用范围:考研党,想要学习排序算法的人员,在校大学生等。 资源难度:初级。(易于学习人员理解)

    数据结构经典排序算法之比较

    排序的基本概念以及其算法的种类,介绍几种常见的排序算法的算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序的算法和分析它们各自的复杂度,然后以表格的形式,清晰直观的表现出它们的复杂度的...

    C++ 实现的简单的希尔排序的算法

    C++ 实现的一个简单的希尔排序的示例代码,写的比较简单,VC环境下运行通过了,给大家学习使用吧,直接copy进去运行就行了

    希尔排序算法

    这里提供8中排序算法中的希尔排序(最小增量排序),供大家学习参考

    各种排序算法的c++泛型实现

    各种常用的排序算法,c++泛型实现,对于学习排序算法以及c++泛型编程都是很好的材料

    Java数据结构与算法学习笔记之排序

    Java数据结构与算法学习笔记之排序 冒泡排序,选择排序,插入排序,希尔排序, 归并排序, 快速排序.

    数据结构-3期(KC002) 希尔排序算法.docx

    数据结构-3期(KC002) 希尔排序算法.docx 学习资料 复习资料 教学资源

    各种排序算法

    里面含有编程所用的大部分算法排序,包括冒泡排序,希尔排序,直接插入排序,快速排序,堆排序,简单选择排序,等等,适合刚入门的学习者

    综合排序系统课程设计(C++实现,有内部排序和外部排序)

    1.内部排序:使用8种内部排序算法(冒泡排序、插入排序、选择排序、希尔排序、快速排序、归并排序、基数排序、堆排序),对出版社信息按照指定关键字进行排序,分析其时空复杂度(在实验报告的总结与思考中会有相应...

    常用排序算法C语言示例代码解说PDF

    个人原创总结的常用排序算法C语言示例代码解说PDF...包含有直接插入排序,折半插入排序,2路直接插入排序,起泡排序,简单选择排序,快速排序,堆排序,(希尔排序,归并排序,基数排序为空白),供学习排序算法的爱好者参考。

    第16讲 插入和希尔排序.pptx

    枚举算法,递归与分治策略,递归与迭代的思想、求最大值最小值、线性查找、二分查找与冒泡排序以及选择与交换排序、插入和希尔排序。本课程除了强调经典的算法理论和模型,亦兼顾编程实践能力。力图使得学员面对复杂...

    十大经典排序算法,附带动画演示效果,超硬核

    本教程涵盖了十大经典排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序和基数排序。通过对这些算法的详细讲解和代码实现,学生将能够深入理解排序算法的原理、...

    python十大排序算法

    使用 python 实现十种最常见的排序算法:选择排序、冒泡排序、插入排序、归并排序、桶排序、计数排序、基数排序、(随机)快速排序、希尔排序和堆排序算法。 适用于数据结构与算法的学习过程中,也是面试过程中常被...

Global site tag (gtag.js) - Google Analytics