希尔排序-插入改进

引自:http://hi.baidu.com/gsgaoshuang/item/17a8ed3c24d9b1ba134b14c2

学习算法的一个好网站

http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.2.2.1.htm

希尔排序(Shell Sort)又称为缩小增量排序,输入插入排序算法,是对直接排序算法的一种改进。本文介绍希尔排序算法。

    对于插入排序算法来说,如果原来的数据就是有序的,那么数据就不需要移动,而插入排序算法的效率主要消耗在数据的移动中。因此可知:如果数据的本身就是有序的或者本身基本有序,那么效率就会得到提高。

    希尔排序的基本思想是:将需要排序的序列划分成为若干个较小的子序列,对子序列进行插入排序,通过则插入排序能够使得原来序列成为基本有序。这样通过对较小的序列进行插入排序,然后对基本有序的数列进行插入排序,能够提高插入排序算法的效率。

    在希尔排序中首先解决的是子序列的选择问题。对于子序列的构成不是简单的分段,而是采取相隔某个增量的数据组成一个序列。一般的选择原则是:去上一个增量的一般作为此次序列的划分增量。首次选择序列长度的一般为增量。

    先假如:数组的长度为10,数组元素为:25,19,6,58,34,10,7,98,160,0

        整个希尔排序的算法过程如下如所示:



上图是原始数据和第一次选择的增量 d = 5。本次排序的结果如下图:

 

 

上图是第一次排序的结果,本次选择增量为 d=2。 本次排序的结果如下图:

当d=1 是进行最后一次排序,本次排序相当于冒泡排序的某一次循环。最终结果如下:

在实际使用过程中,带排序的数据肯定不是只有十个,但是上述是希尔排序的思想。其实希尔排序只是插入排序的一种优化。

希尔排序的整个流程如下图所示:假设带排序的数据结构为整型数组 A[n] 数组长度为 n

 

C++实现希尔排序的代码如下所示:

// ShellSort.cpp : Defines the entry point for the console application.

//

 

#include "stdafx.h"

#include <iostream>

 

using namespace std;

 

void Display(int array[],int length);

 

void ShellSort(int array[],int length);

 

int main(int argc, char* argv[])

{

         int arr[10] = {25,19,6,58,34,10,7,98,160,0};

         Display(arr,10);

 

         ShellSort(arr,10);

 

         Display(arr,10);

         system("pause");

         return 0;

}

 

//输出数组

void Display(int array[],int length)

{

         for(int i =0;i<length;i++)

         {

                   cout<<array[i]<<", ";

         }

         cout<<endl;

}

 

//希尔排序算法的实现

void ShellSort(int array[],int length)

{

         int d = length/2;   //设置希尔排序的增量

         int i ;

         int j;

         int temp;

         while(d>=1)

         {

                   for(i=d;i<length;i++)

                   {

                            temp=array[i];

                            j=i-d;

                            while(j>=0 && array[j]>temp)

                            {

                                     array[j+d]=array[j];

                                     j=j-d;

                            }

//不明白为何要-d,循环出来之后又+d,不是多此一举 啊

                            array[j+d] = temp;

                   }

                   Display(array,10);

                   d= d/2;    //缩小增量

         }

}

 

/*

希尔排序是对插入排序的一种改进。该算法思路和代码都比较复杂。以上代码在VC 6.0 中成功运行

*/

 

 

转载于:https://www.cnblogs.com/fickleness/p/3339008.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习实战之决策树

你是否玩过二十个问题的游戏,游戏的规则很简单:参与游戏的一方在脑海里想某个事物,其他参与者向他提问题,只允许提20个问题,问题的答案也只能用对或错回答。问问题的人通过 推断分解,逐步缩小待猜测事物的范围。决策树的工作原理与20个问题类似,用户输人一系列数 据,然后给出游…

细嚼慢咽C++primer(4)——类(1):构造函数,类型别名

1 最简单地说&#xff0c;类即使定义了一个新的类型和一个新的作用域。 2 基础 1 构造函数 构造函数一般应使用一个构造函数初始化列表&#xff0c;来初始化对象的数据成员。 Sales_item(): units_sold(0), revenue(0.0) {}; 2 成员函数 在类内部定义的函数默认为inline. …

2018全球硬科技创新暨“一带一路”创新合作大会,这些硬科技都要来!

来源&#xff1a;新华社近年来&#xff0c;多个省市陆续开始了一场科技标签秀&#xff0c;以深圳等为代表的“人工智能”、以上海为代表的“金融科技”&#xff0c;以贵州为代表的“大数据”等纷纷亮相&#xff0c;而伴随着“一带一路”新丝路的战略实施&#xff0c;西安&#…

吴恩达:人工智能寒冬不会到来,但我们太乐观了

来源&#xff1a;量子位AI Winter Is Coming&#xff1f;人工智能领域的各路专家学者曾经为这个话题吵翻了天。最近&#xff0c;这个话题又有更新了。人工智能寒冬论的作者Filip Piekniewski在博客上发文&#xff0c;给自己提出的观点增加了新的证据。非常巧的是&#xff0c;吴…

SQL数据库误删除表数据恢复 SQL数据库truncate表数据恢复

SQL数据库误删除表数据恢复 SQL数据库truncate表数据恢复 误删除表需要恢复该表&#xff0c;要注意几个问题&#xff0c; 第一 删除表后是否新建表了 是否插入数据了。 第二 删除表后是否立即关闭SQL服务了/ 第三 数据库是否是完整模式 我们先来了解下 删除表做了那些操作&…

自动驾驶中常用的四类机器学习算法

来源&#xff1a;智车科技机器学习算法已经被广泛应用于自动驾驶各种解决方案&#xff0c;电控单元中的传感器数据处理大大提高了机器学习的利用率&#xff0c;也有一些潜在的应用&#xff0c;比如利用不同外部和内部的传感器的数据融合(如激光雷达、雷达、摄像头或物联网)&…

CSS样式如何解决IE浏览器不同版本的兼容问题

如果你想让浏览器是固定的IE6版本&#xff0c;那么你做网页的时候在<head>后面加上一句话&#xff1a; <meta http-equiv"X-UA-Compatible" content"IEEmulateIE6" /> 把这句话加在<head>标签后面第一句话就OK了。注意&#xff0c;再强调…

国际基因编辑科技发展报告

来源&#xff1a;全球技术地图作者&#xff1a;贾晓峰 中国科学技术信息研究所摘要&#xff1a;以特异性的改变遗传物质靶向基因序列为目标的基因编辑技术是近年生命科学领域最热门的研究领域之一。围绕基因编辑的相关领域研究和人物事件连续多年入选Nature国际科学事件和科学人…

各大主流.Net的IOC框架性能测试比较

http://www.cnblogs.com/liping13599168/archive/2011/07/17/2108734.html转载于:https://www.cnblogs.com/PatrickLee/p/3347322.html

Help View修复

好吧&#xff0c;手贱把ProgramData里关于Help View的某些数据删除了 (在任何情况下都不要删除此文件夹中的任何数据)。即使卸载后重新安装也出现错误&#xff0c;可以参考的http://social.msdn.microsoft.com/Forums/vstudio/pt-BR/8525617e-6300-415f-8980-8658ba0045ef/visu…

科学家发现大脑动态评估信息重要性机制

大脑中部的丘脑室旁核&#xff08;PVT&#xff09; 图片来源&#xff1a;中科院深圳先进技术研究院来源&#xff1a;中国科学报周末该在家看书还是出去K歌&#xff1f;寒冬将至&#xff0c;该坚持健身还是涮个火锅&#xff1f;每天&#xff0c;人们都会面临上百种选择。以往&am…

JS 利用数组拼接html字符串

var cc []; cc.push(<td colspan fields.length style"padding:10px 5px;border:0;">); cc.push(</td>); return cc.join(); 转载于:https://www.cnblogs.com/101key/p/3349143.html

腾讯AI Lab研发「智能显微镜」 抢先布局病理分析领域

来源&#xff1a;腾讯AI实验室腾讯 AI Lab 在南京举办的「腾讯全球合作伙伴大会」上宣布&#xff0c;其AI医疗领域研究已抢先从影像筛查进入病理分析阶段&#xff0c;相关的「智能显微镜」项目已在研发测试阶段。智能显微镜融入了人工智能&#xff08;AI&#xff09;的视觉、语…

石墨烯新新新应用,MIT大规模生产细胞大小机器人,有感知能存储

&#xff08;MIT开发的微型机器人&#xff09;来源&#xff1a;机器人大讲堂近期&#xff0c;MIT又玩出了新花样&#xff0c;在前几个月成功开发出细胞大小并且能够感知外部环境、储存数据并执行计算任务的微型机器人后&#xff0c;MIT又带来了新消息&#xff1a;他们为大规模生…

windows 批处理-重命名

从数字1递增批量重命名ren.bat&#xff1a; echo off SETLOCAL ENABLEDELAYEDEXPANSION set /A num0 FOR /F "tokens*" %%i in (dir /A-D /B /OD /TC) do ( IF NOT "%%i""%~n0%~x0" ( set /A num1 ren "%%i" "!num!%%~xi&quo…

多种图像配准方法的综合比较(KAZE、SIFT、SURF等)

接触图像配准是从去年十月份开始的&#xff0c;老师要求我尽快重现一遍整个流程&#xff0c;这样对课题可以有一个整体的把握&#xff0c;而后再仔细推敲细节&#xff0c;甚至提出自己的想法&#xff0c;老师的这个思路现在觉得非常不错。自己当时选取的是SURF方法&#xff0c;…

全面梳理百度世界大会:量产L4乘用车和两款音箱 还有挖掘机技术

来源&#xff1a;网易智能摘要&#xff1a;今天&#xff0c;百度一年一度的世界大会如约而至&#xff0c;李彦宏宣布发布量产红旗L4级乘用车&#xff0c;推出两款小度语音智能产品和智能城市“ACE计划”。多年以来&#xff0c;百度世界大会和AI开发者大会成为百度对外的窗口&am…

图像处理中的通信原理——冈萨雷斯读书笔记(一)

信息的概念在信息论中很明确&#xff1a;用于衡量事件的不确定性。信息的传播形式或者所载体便是信号&#xff0c;比如说电信号、光信号、声音信号。那么信息的表现形式就是消息&#xff0c;可以是语言、文字、图像。所以说图像处理依然是信息与通信领域的一部分。它可以看作是…

【转载】贝叶斯决策论

原文链接&#xff08;http://www.cnblogs.com/elaron/archive/2012/10/29/2745010.html&#xff09; 1、什么是行为&#xff1f; 但是&#xff0c;有时候&#xff0c;后验概率本身只能说明具有特征x的样本属于ωi类的可能性有多少&#xff0c;却没能表示如果将样本分到ωi类时的…

李彦宏:人工智能会让这个世界变得更美好吗?YES AI DO!

来源&#xff1a;亿欧摘要&#xff1a;李彦宏表示&#xff0c;今天我们让公园充满AI&#xff0c;未来我们会让整个世界充满AI。11月1日&#xff0c;在百度世界大会上&#xff0c;李彦宏围绕人工智能是否能让这个世界变得更美好开展演讲&#xff0c;并且结合系列百度新近推出的产…