shell排序是对插入排序的一个改装,它每次排序把序列的元素按照某个增量分成几个子序列,对这几个子序列进行插入排序,然后不断的缩小增量扩大每个子序列的元素数量,直到增量为一的时候子序列就和原先的待排列序列一样了,此时只需要做少量的比较和移动就可以完成对序列的排序了。
// shell排序
void ShellSort(int array[], int length)
{
int temp;
// 增量从数组长度的一半开始,每次减小一倍
for (int increment = length / 2; increment > 0; increment /= 2)
for (int i = increment; i < length; ++i)
{
temp = array[i];
// 对一组增量为increment的元素进行插入排序
for (int j = i; j >= increment; j -= increment)
{
// 把i之前大于array[i]的数据向后移动
if (temp < array[j - increment])
{
array[j] = array[j - increment];
}
else
{
break;
}
}
// 在合适位置安放当前元素
array[j] = temp;
}
}
分享到:
相关推荐
本篇将详细介绍标题所提及的四种排序算法:Shell排序、快速排序、归并排序以及堆排序。 1. **Shell排序**: Shell排序是一种改进的插入排序,由Donald Shell于1959年提出。它通过设置一个间隔序列,使得数组中的...
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
### C++中的Shell排序算法详解 #### 一、Shell排序简介 Shell排序是插入排序的一种扩展,由Donald Shell于1959年提出。它通过将原始数组分割成多个子序列,分别对这些子序列进行插入排序来提高插入排序的效率。随着...
数据结构课程排序算法中的经典shell排序
shell排序的c语言算法 很好很强大很高效很教授的算法
总结,C语言实现冒泡Shell排序算法是将冒泡排序与Shell排序结合,先用Shell排序优化初步排序,再用冒泡排序进行微调,以达到更好的性能。理解并掌握这些基础排序算法有助于我们更好地理解和设计更复杂的排序算法。在...
**Shell排序算法详解及其在Simotion中的应用** Shell排序,由美国计算机科学家Donald Shell于1959年提出,是一种改进的插入排序算法,通过设置一个间隔序列来减少比较和交换的操作,从而提高了排序的效率。它巧妙地...
这里我们汇总了七种常见的排序算法:Shell排序、归并排序、选择排序、快速排序、堆排序、冒泡排序和插入排序。每种算法都有其独特的特点和适用场景,下面将逐一详细介绍。 1. **Shell排序**:由Donald Shell提出,...
**Shell排序**是一种插入排序的变种,由Donald Shell在1959年提出,它通过将待排序的数组元素按某个增量分组,然后对每组进行直接插入排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰...
### C经典算法之Shell排序法 - 改良的插入排序 #### 描述 在计算机科学领域,排序算法一直是研究的重点之一。插入排序是一种简单的排序方法,其基本思想是从待排序序列中依次取出元素与已排序的部分进行比较并插入...
利用c语言写一个算法实现shell排序,是一个简单的程序
本文将深入探讨标题和描述中提及的几种排序算法:直接插入排序、希尔排序(SHELL排序)、冒泡排序、快速排序、简单选择排序、堆排序以及归并排序,并对它们进行分析和比较。 1. **直接插入排序**: - 直接插入排序...
这里主要介绍四种常见的排序算法:Shell排序、选择排序、快速排序以及冒泡排序。 **Shell排序**: Shell排序是一种改进的插入排序,由Donald Shell于1959年提出。它的基本思想是通过设定一个初始间隔(增量h),将...
**Shell排序**是一种基于插入排序的算法,由Donald Shell在1959年提出。它的主要特点是通过设定一个间隔序列,将待排序的数组分组,对每组使用插入排序,然后逐渐减小间隔,直到间隔为1,完成整个数组的排序。这种...
Shell排序,又称希尔排序,是基于插入排序的一种更高效的改进版本。由Donald Shell于1959年提出,它的主要思想是将待排序的数据分割成若干个子序列,然后对每个子序列进行插入排序,最后逐步减少子序列的间隔,直到...
本文实例讲述了C语言基本排序算法之shell排序。分享给大家供大家参考,具体如下: shell排序是对直接插入方法的改进方法. /*-----------------------------------------------------------------------------------...
java shell代码,,测试排序时间
### 希尔排序(Shell Sort)详解 #### 一、引言 希尔排序是一种基于插入排序的高效排序算法,由计算机科学家Donald Shell在1959年提出。该算法通过将原始序列分割成多个子序列,分别进行插入排序来提高排序效率。...
Shell排序是一种改进的插入排序,由Donald Shell在1959年提出,目的是减少大规模数据排序时的比较次数。它的基本思想是通过设置一个间隔序列(Gap Sequence),将待排序的数组分成多个子序列,对每个子序列进行插入...