希尔排序
// 希尔排序.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#define N 100
using namespace std;
typedef int DataType;
void shell_sort(DataType *data,int n)
{
int i,j,gap;
gap = n/2;
while(gap>0)
{
for(i=gap+1;i<=n;i++)
{
if(data[i]<data[i-gap])
{
data[0] = data[i];
for(j=i-gap;j>0&&data[0]<data[j];j-=gap)
data[j+gap]=data[j];
data[j+gap]=data[0];
}
}
gap/=2;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
DataType data[N];
int cases;
cout<<"请输入案例个数:"<<endl;
cin>>cases;
while(cases--)
{
int n;
cout<<"请输入元素的个数:";
cin>>n;
cout<<"请输入这些元素:"<<endl;
int i;
//data[0]空出来
for(i=1;i<=n;i++)
{
cin>>data[i];
}
cout<<"希尔排序前:"<<endl;
for(i=1;i<=n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
shell_sort(data,n);
cout<<"希尔排序后:"<<endl;
for(i=1;i<=n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
system("pause");
return 0;
}
-------------------------------------------程序测试------------------------------------------
请输入案例个数:
2
请输入元素的个数:8
请输入这些元素:
23 1 13 34 113 23 12 19
希尔排序前:
23 1 13 34 113 23 12 19
希尔排序后:
1 12 13 19 23 23 34 113
请输入元素的个数:10
请输入这些元素:
10 9 8 7 6 5 4 3 2 1
希尔排序前:
10 9 8 7 6 5 4 3 2 1
希尔排序后:
1 2 3 4 5 6 7 8 9 10
请按任意键继续. . .
分享到:
相关推荐
在C++中实现希尔排序,我们需要以下几个步骤: 1. **设置间隔序列**:首先确定一个间隔序列,比如最简单的就是从数组长度的一半开始,每次减半,直到间隔为1。 2. **分组排序**:对每个间隔,将数组中的元素分为...
下面是一个简单的C++实现希尔排序的源代码示例: ```cpp #include #include void shellSort(std::vector<int>& arr) { int n = arr.size(); // 增量序列通常选用Hibbard序列或Hurst-Schwarz序列 // 这里以...
数据结构排序算法中的希尔(shell)排序,可供初学者参考
在实现希尔排序时,常见的增量序列有Hibbard序列、Sedgewick序列、Shellsort 3/2序列等。选择不同的序列会影响排序的速度和效果。 希尔排序源代码的关键部分通常包括以下函数: 1. `shell_sort()`:主函数,调用...
`SortAlgorithm.cpp`中也可能包含了希尔排序的C++实现,可能使用了嵌套循环来实现分组和插入排序。 `InputOutput.cpp`文件负责数据的输入和输出,这通常包括从文件读取待排序的序列,以及将排序后的序列写回文件。...
本文将详细介绍C++中实现的希尔排序、快速排序、堆排序和归并排序这四种经典排序算法。 希尔排序,由Donald Shell于1959年提出,是一种改进的插入排序。它的基本思想是通过设置一个增量序列,将待排序的元素按照...
binary sort,二分法查找,binary search, 二分法排序,merge sort 混合排序,shell sort 希尔排序,insertion sort 插入排序。数据结构 data structure
- `13 希尔排序.cpp`: 这是一个C++源代码文件,实现了希尔排序算法。C++是C语言的一个扩展,它包含C语言的所有特性,并且引入了面向对象编程的概念。但在这个案例中,由于文件名包含"C++"的扩展名,可能是开发者习惯...
### C++实现的简单希尔排序算法 #### 一、希尔排序简介 希尔排序(Shell Sort)是插入排序的一种更高效的改进版本。它是由Donald Shell在1959年提出的一种排序算法。希尔排序的主要思想是将待排序序列分为若干个子...
### 希尔排序算法详解 #### 算法概述 希尔排序(Shell Sort),又称为缩小增量排序,是插入排序的一种更高效...以上代码片段清晰地展示了希尔排序在C++中的实现细节,对于理解和学习希尔排序算法具有很高的参考价值。
在C++中,希尔排序的实现通常包括一个自定义的`shellSort`函数,如示例所示。这个函数接收一个整数向量`arr`作为参数,首先获取数组长度n,然后选择一个增量序列(通常是n/2开始,逐次减半)。接下来,使用两个嵌套...
文章还提供了希尔排序在不同编程语言环境(C++, C)中的实例代码实现,详细介绍了其执行步骤和应用场景。排序算法不仅解决了元素快速移位的问题,同时优化了排序的效率,特别是对于非大规模数据的场景更加适合。 适合...
下面将详细讲解这7种排序算法:快速排序、归并排序、插入排序、选择排序、冒泡排序、堆排序以及希尔排序。 1. **快速排序**:由C.A.R. Hoare提出的,采用分治策略。基本思想是选取一个基准元素,通过一趟排序将待...
快速排序、堆排序、归并排序和希尔排序是四种经典的排序算法,它们在计算机科学中有着广泛的应用。这里我们将深入探讨这些排序算法的原理、实现方式以及它们在C++编程中的应用。 **快速排序(Quick Sort)** 快速...
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,...
这里我们关注的是六种经典的排序算法:快速排序、选择排序、冒泡排序、希尔排序、插入排序以及懒人排序。这六种算法都是使用C语言实现的,因此对C编程有一定的基础要求。 1. **快速排序**:由英国计算机科学家C.A.R...
5. 实现方式:希尔排序可以使用各种编程语言实现,如C、C++、Java等。在C语言中,可以通过编写函数来实现希尔排序,主要涉及到数组的操作和循环控制。 6. 应用场景:希尔排序适用于需要快速排序但对稳定性要求不高...
希尔排序 希尔排序.cpp 使用C++来实现
一个数据结构作业,对刚刚学习希尔排序知识的同学有用,用C++做的