博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
希尔排序——算法系列
阅读量:4633 次
发布时间:2019-06-09

本文共 2479 字,大约阅读时间需要 8 分钟。

希尔排序:

插入排序的升级版,主要采用了分组的策略,采用逐渐减小步长来控制分组的大小,各组内采用插入排序,当步长减小为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
list = new List
(); //插入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
ShellSort(List
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
InsertSort(List
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

你可能感兴趣的文章
could not instantiate class [com.jinqing.cashier.entity.abstractVO.TradeItemVO] from tuple
查看>>
Java_JVM参数-XX:MaxDirectMemorySize 与 两种 ByteBuffer: heap,direct ByteBuffer
查看>>
【转载】HBase Region重点剖析
查看>>
Linux系统添加路由条目信息
查看>>
Php—AJAX跨域问题
查看>>
谈到电影,我们收获了什么
查看>>
设置CentOS开机连接网络 Centos 开机启动网卡的设置方法
查看>>
1.12Linux下软件安装(学习过程)
查看>>
七:初探异步编程
查看>>
Shell编程之if语句实战(详解)
查看>>
OAuth 2.0 学习
查看>>
PHP 常用的header头部定义汇总
查看>>
测试虚线
查看>>
Codeforces Round #296 (Div. 2) B. Error Correct System
查看>>
python之列表生成式
查看>>
小程序开发 自定义转发
查看>>
【找回数学的感觉】1 再版汉诺塔等
查看>>
3. Longest Substring Without Repeating Characters
查看>>
我的一亩三分地
查看>>
Java线程和多线程(三)——线程安全和同步
查看>>