using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ShellSort
{
class DataType
{
public double Data; public static bool operator <(DataType a, DataType b)
{
if (a.Data < b.Data)
return true; return false;
} public static bool operator >(DataType a, DataType b)
{
if (a.Data > b.Data)
return true; return false;
} public DataType()
{
Data = ;
}
}
class Program
{
public static int count = ;
static void Main(string[] args)
{
DataType[] array = CreateArray();
SetArrayValue(array);
ShellSort(array, , array.Length - ); Console.ReadKey();
} public static void ShellSort(DataType[] array, int left, int right)
{
DataType temp;
int i, j, gap = right - left + ;
PrintArray(array);
do
{
gap = gap / + ;
for (i = left + gap; i <= right; i++)
{
if (array[i] < array[i - gap])
{
temp = array[i];
j = i - gap;
do
{
array[j + gap] = array[j];
j = j - gap;
} while (j > left && temp < array[j]);
array[j + gap] = temp;
}
}
count++;
Console.WriteLine("间隔为: {0}", gap);
PrintArray(array);
} while (gap > );
} public static void PrintArray(DataType[] array)
{
Console.Write("第{0}次排序结果: ", count);
foreach (var data in array)
{
if (data != array[array.Length - ])
{
Console.Write(data.Data + " ");
}
else
{
Console.WriteLine(data.Data);
}
}
} public static void SetArrayValue(DataType[] array)
{
Random random = new Random();
foreach (var data in array)
{
data.Data = random.Next(, );
}
} public static DataType[] CreateArray(int size)
{
if (size < )
return null;
DataType[] temp = new DataType[size];
for (int i = ; i < size; i++)
{
temp[i] = new DataType();
}
return temp;
}
}
}

Code Here

Shell Sort(草稿)的更多相关文章

  1. 希尔排序( Shell Sort)

    原文地址:http://www.stoimen.com/blog/,在此感谢作者! Insertion sort is a great algorithm, because it’s very int ...

  2. [算法] 希尔排序 Shell Sort

    希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进.该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 希尔排序实质上是一种分组插入方法.它的基本思想是: ...

  3. - Shell - sort处理大文件(页 1) - ChinaUnix.net

    - Shell - sort处理大文件(页 1) - ChinaUnix.net sort处理大文件

  4. 排序算法--希尔排序(Shell Sort)_C#程序实现

    排序算法--希尔排序(Shell Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难 ...

  5. 希尔排序Shell sort

    希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第一块希尔排序介绍 准备待排数组[6 2 4 1 ...

  6. 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-004希尔排序法(Shell Sort)

    一.介绍 1.希尔排序的思路:希尔排序是插入排序的改进.当输入的数据,顺序是很乱时,插入排序会产生大量的交换元素的操作,比如array[n]的最小的元素在最后,则要经过n-1次交换才能排到第一位,因为 ...

  7. 排序 —— 希尔排序(Shell sort)

    希尔排序(Shell sort)的名称源于它的发明者 Donald Shell,该算法是冲破二次时间屏障(冒泡和插入排序,基于相邻元素的交换)的第一批算法.希尔排序改进了冒泡和插入排序的相邻元素才进行 ...

  8. [转帖]linux Shell sort按照指定列排序

    linux Shell sort按照指定列排序 https://blog.csdn.net/weixin_38308151/article/details/80760133 kubectl get p ...

  9. 【算法】希尔排序(Shell Sort)(四)

    希尔排序(Shell Sort) 1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版.它与插入排序的不同之处在于,它会优先比较距离较远的元素.希尔排序又叫缩小增量排序. ...

随机推荐

  1. React笔记_(1)_react概述

    React概述   React是一种很好的前端技术. 它将应用打散成独立的小模块,然后进行组装,完成开发. react远比angularjs难学的多. react依赖的如webpack等各种工具得先学 ...

  2. 【Pro ASP.NET MVC 3 Framework】.学习笔记.2.MVC的主要工具-Ninject

    这三个工具,应该是每个MVC程序员的兵工厂中的一部分.DI容器,单元测试框架,mocking 工具.Ninject是我们偏爱的DI容器,它简单,高雅,并且容易使用.这里有很多复杂的替代品,但是我们喜欢 ...

  3. restful 注解

    @Path @Path 注释被用来描述根资源.子资源方法或子资源的位置.value 值可以包含文本字符.变量或具有定制正则表达式的变量. @GET.@POST.@PUT.@DELETE.@HEAD @ ...

  4. 自定义tableViewCell

    http://my.oschina.net/joanfen/blog/137601 效果如下图:可触发按钮事件 1.创建一个Empty Application 2.新建一个TableViewContr ...

  5. 使用Symfony 2在三小时内开发一个寻人平台

    简介 Symfony2是一个基于PHP语言的Web开发框架,有着开发速度快.性能高等特点.但Symfony2的学习曲线也比 较陡峭,没有经验的初学者往往需要一些练习才能掌握其特性. 本文通过一个快速开 ...

  6. char 型变量中能不能存贮一个中文汉字,为什么?

    char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个char类型占2个字节(16比特),所以放一个 ...

  7. ACM题目————Subsequence

    Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...

  8. HDU-1042 N!

    首先明白这是大数问题,大数问题大多采用数组来实现.如何进位.求余等.比如1047 (Integer Inquiry): 对于1042问题 计算10000以内数的阶乘,因为10000的阶乘达到35660 ...

  9. Resilio(BtSync)搭建

    Resilio(原名:BtSync)介绍 同步是使用PC和Mac,NAS,甚至服务器之间传输文件的最好方法.创建自己的私有云.连接设备和同步文件安全,不发送他们在第三方服务器.我们不限制你的速度和存储 ...

  10. Python学习笔记-Day2-Python基础之列表操作

    列表的常用操作包括但不限于以下操作: 列表的索引,切片,追加,删除,切片等 这里将对列表的内置操作方法进行总结归纳,重点是以示例的方式进行展示. 使用type获取创建对象的类 type(list) 使 ...