希尔排序_C++

简介: 是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。

是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。。

{
int c=*a;
*a=*b;
*b=c;
}
void shell(int*data,unsigned int len)
{
if(len<=1||data==NULL)
 return;
for(int div=len/2;div>=1;div=div/2)//定增量div,并不断减小
{
 for(int i=0;i<=div;++i)//分组成div组
 {
  for(int j=i;j<len-div;j+=div)//对每组进行插入排序
   for(int k=j;k<len;k+=div)
    if(data[j]>data[k])
     swapInt(data+j,data+k);//交换两个数的值
 }
}
}
目录
相关文章
|
7月前
|
搜索推荐 Shell C++
C++希尔排序的实现
C++希尔排序的实现
|
搜索推荐 算法 C++
【基础算法】希尔排序法 & C++实现 | [实例过程详细分析]
希尔排序算法是基于插入排序法的思想,其又被称为希尔排序或者缩小增量排序。它的具体流程如下:(结合希尔排序算法代码段理解)
215 0
【基础算法】希尔排序法 & C++实现 | [实例过程详细分析]
|
存储 人工智能 搜索推荐
【八大数据排序法】希尔排序法的图形理解和案例实现 | C++
排序算法是我们在程序设计中经常见到和使用的一种算法,它主要是将一堆不规则的数据按照递增或递减的方式重新进行排序。在如今的互联网信息时代,随着大数据和人工智能的发展,大型企业的数据库中有亿级的用户数据量。因此对其进行处理,排序算法也就成为了其中必不可缺的步骤之一。
125 0
|
搜索推荐 算法 C++
C++实现排序 - 01 冒泡、选择、插入和希尔排序
从这一讲开始,我们整理一下常见的十大排序算法,可以按照它们的时间复杂度进行大致的分类。今天先来讲讲平均时间复杂度为 O(n^2^) 的四个排序算法。
156 0
C++实现排序 - 01 冒泡、选择、插入和希尔排序
|
1月前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
51 2
|
1月前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
107 5
|
1月前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
98 4
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
119 4
|
2月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
32 4
|
2月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
33 4