希尔排序:

插入排序的升级版,主要采用了分组的策略,采用逐渐减小步长来控制分组的大小,各组内采用插入排序,当步长减小为1的时候,大部分数据都已经有序,所以较插入排序优化了许多。

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Net;
using System.Threading;namespace ConsoleApplication1
{class Program{static void Main(string[] args){for (int i = 1; i <= 5; i++){List<int> list = new List<int>();//插入2k个随机数到数组中for (int j = 0; j < 20000; j++){Thread.Sleep(1);list.Add(new Random((int)DateTime.Now.Ticks).Next(10000, 1000000));}Console.WriteLine("\n第" + i + "次比较:");Stopwatch watch = new Stopwatch();watch.Start();var result = ShellSort(list);//这里这个single=>single不懂
                watch.Stop();Console.WriteLine("\n希尔排序耗费时间:" + watch.ElapsedMilliseconds);Console.WriteLine("输出前是十个数:"+string.Join(",",result.Take(10).ToList()));watch.Start();result = InsertSort(list);watch.Stop();Console.WriteLine("\n插入排序耗费时间:" + watch.ElapsedMilliseconds);Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));}Console.ReadLine();}static List<int> ShellSort(List<int> list){int step = list.Count / 2;while (step >= 1){for (int i = step; i < list.Count; i++){int temp = list[i];int j;for (j = i - step; j >= 0 && temp < list[j]; j = j - step){list[j + step] = list[j];}list[j + step] = temp;}step = step / 2;}return list;}//插入排序算法static List<int> InsertSort(List<int> list){for (int i = 1; i < list.Count; i++){int temp = list[i];int j;for (j = i - 1; j >= 0 && temp < list[j]; j--){list[j + 1] = list[j];}list[j + 1] = temp;}return list;}}
}

不过这里有个问题,我的希尔排序并不比插入排序快多少,不知道问题出在哪里。。。。。待解决

转载于:https://www.cnblogs.com/7ants/archive/2013/03/12/2956799.html

希尔排序——算法系列相关推荐

  1. 排序算法系列:Shell 排序算法

    概述 希尔排序(Shell Sort)是 D.L.Shell 于 1959 年提出来的一种排序算法,在这之前排序算法的时间复杂度基本都是 O(n2n^{2}n2) 的,希尔排序算法是突破这个时间复杂度 ...

  2. 【排序算法系列 1】冒泡排序(Bubble Sort)

    [排序算法系列 1]冒泡排序 [排序算法系列 2]选择排序 [排序算法系列 3] 插入排序 [排序算法系列 4] 高级排序--希尔排序(插入排序的改进) [排序算法系列 5] 高级排序--归并排序 [ ...

  3. 【十大排序算法系列】快速排序

    写在前面 上一篇更新了这个系列的排序算法([十大排序算法系列]冒泡排序).分析了冒泡的逻辑和优化点,下面来写下快速排序(为什么跳这么快?因为比较走心hhhh) 照例给出系列内所有算法的对比.. 常见的 ...

  4. 精通八大排序算法系列:二、堆排序算法

    精通八大排序算法系列:二.堆排序算法 作者:July .二零一一年二月二十日 本文参考:Introduction To Algorithms,second edition. ------------- ...

  5. 算法:两种步长的希尔排序算法

    算法:两种希尔排序算法 1 /** 2 * 希尔排序 3 * 不同步长的算法 4 * @author mackxu 5 * 6 */ 7 class ShellSort { 8 private int ...

  6. 八十八、Python | 十大排序算法系列(下篇)

    @Author:Runsen @Date:2020/7/10 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...

  7. 八十七、Python | 十大排序算法系列(上篇)

    @Author:Runsen @Date:2020/7/10 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...

  8. JavaScript实现ShellSort希尔排序算法(附完整源码)

    JavaScript实现ShellSort希尔排序算法(附完整源码) Comparator.js完整源代码 Sort.js完整源代码 ShellSort.js完整源代码 Comparator.js完整 ...

  9. 排序算法:希尔排序算法实现及分析

    希尔排序算法介绍 希尔排序是D.LShell 与1957年提出来的一种排序算法,在这之前排序算法的时间复杂度都是O(n^2),希尔排序算法是突破这个时间复杂度的第一批算法之一.我们知道直接插入排序算法 ...

最新文章

  1. 系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常...
  2. 【深度学习理论】通俗理解生成对抗网络GAN
  3. dd linux 格式化u盘启动盘_linux dd命令[用于制作U盘启动盘的神奇的命令]
  4. Vue源码后记-更多options参数(1)
  5. JSONP解决跨域及ajax同步问题
  6. Python 的垃圾回收回收机制(源码)
  7. php 函数 中文,PHP语言之PHP中文函数连载(二)
  8. uva_1422 Processor
  9. sql 查询目标数据库中所有的表以其关键信息
  10. CAPL学习之路-DoIP相关函数
  11. 计算机大写改成拼音形式,excle中汉字怎么转为大写拼音/excel如何将数字变成中文大写?...
  12. UOJ220 [NOI2016] 网格 【割顶】【并查集】
  13. 合泰单片机点灯c语言程序,ht66f018合泰单片机暖风机的C语言源程序
  14. win10 你没有足够的权限执行此操作。
  15. 青木的书籍,--股票
  16. oracle查询挂起,表挂起更新查询Oracle 11g(Table hangs on Update query Oracle 11g)
  17. 分享一下我的一些学习方法
  18. 国内5款优秀的WEB前端框架
  19. CommVault v11新特性和战略解读
  20. Android工程师级别和学习路线

热门文章

  1. 蒙特卡洛粒子滤波定位算法_粒子滤波——来自哈佛的详细的粒子滤波器教程【1】...
  2. 计算机知识课后反思,计算机硬件和软件知识课后反思
  3. 想转行学软件测试要注意哪些问题
  4. TCP和UDP传输特点
  5. SpringBoot注解大全 转
  6. web类协议脚本-飞机订票系统示例
  7. npm中package-lock.json的作用:npm install安装时使用
  8. reportNG定制化之失败截图及日志
  9. Nginx 学习笔记(六)引入线程池 性能提升9倍
  10. 2.最详细的WSDD配置文件注释