`
pleasetojava
  • 浏览: 727683 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

希尔排序C++实现

 
阅读更多

希尔排序

// 希尔排序.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++ 希尔排序实现

    在C++中实现希尔排序,我们需要以下几个步骤: 1. **设置间隔序列**:首先确定一个间隔序列,比如最简单的就是从数组长度的一半开始,每次减半,直到间隔为1。 2. **分组排序**:对每个间隔,将数组中的元素分为...

    c++希尔排序算法实现源代码 原创

    下面是一个简单的C++实现希尔排序的源代码示例: ```cpp #include #include void shellSort(std::vector&lt;int&gt;& arr) { int n = arr.size(); // 增量序列通常选用Hibbard序列或Hurst-Schwarz序列 // 这里以...

    排序算法 希尔排序 C++

    数据结构排序算法中的希尔(shell)排序,可供初学者参考

    希尔排序算法源代码

    在实现希尔排序时,常见的增量序列有Hibbard序列、Sedgewick序列、Shellsort 3/2序列等。选择不同的序列会影响排序的速度和效果。 希尔排序源代码的关键部分通常包括以下函数: 1. `shell_sort()`:主函数,调用...

    快速排序,希尔排序c++工程

    `SortAlgorithm.cpp`中也可能包含了希尔排序的C++实现,可能使用了嵌套循环来实现分组和插入排序。 `InputOutput.cpp`文件负责数据的输入和输出,这通常包括从文件读取待排序的序列,以及将排序后的序列写回文件。...

    C++实现希尔、快速、堆排序、归并排序算法

    本文将详细介绍C++中实现的希尔排序、快速排序、堆排序和归并排序这四种经典排序算法。 希尔排序,由Donald Shell于1959年提出,是一种改进的插入排序。它的基本思想是通过设置一个增量序列,将待排序的元素按照...

    c++ 二分法查找 二分法排序 混合排序 希尔排序 插入排序

    binary sort,二分法查找,binary search, 二分法排序,merge sort 混合排序,shell sort 希尔排序,insertion sort 插入排序。数据结构 data structure

    希尔排序(C语言程序)

    - `13 希尔排序.cpp`: 这是一个C++源代码文件,实现了希尔排序算法。C++是C语言的一个扩展,它包含C语言的所有特性,并且引入了面向对象编程的概念。但在这个案例中,由于文件名包含"C++"的扩展名,可能是开发者习惯...

    C++ 实现的简单的希尔排序的算法

    ### C++实现的简单希尔排序算法 #### 一、希尔排序简介 希尔排序(Shell Sort)是插入排序的一种更高效的改进版本。它是由Donald Shell在1959年提出的一种排序算法。希尔排序的主要思想是将待排序序列分为若干个子...

    希尔排序的代码

    ### 希尔排序算法详解 #### 算法概述 希尔排序(Shell Sort),又称为缩小增量排序,是插入排序的一种更高效...以上代码片段清晰地展示了希尔排序在C++中的实现细节,对于理解和学习希尔排序算法具有很高的参考价值。

    C++实现希尔排序(含实现原理)

    在C++中,希尔排序的实现通常包括一个自定义的`shellSort`函数,如示例所示。这个函数接收一个整数向量`arr`作为参数,首先获取数组长度n,然后选择一个增量序列(通常是n/2开始,逐次减半)。接下来,使用两个嵌套...

    c++ 7 种排序.快速排序, 归并排序,插入排序,选择排序,起泡排序,堆排序,希尔排序

    下面将详细讲解这7种排序算法:快速排序、归并排序、插入排序、选择排序、冒泡排序、堆排序以及希尔排序。 1. **快速排序**:由C.A.R. Hoare提出的,采用分治策略。基本思想是选取一个基准元素,通过一趟排序将待...

    快速排序、堆排序、归并排序、希尔排序实现

    快速排序、堆排序、归并排序和希尔排序是四种经典的排序算法,它们在计算机科学中有着广泛的应用。这里我们将深入探讨这些排序算法的原理、实现方式以及它们在C++编程中的应用。 **快速排序(Quick Sort)** 快速...

    7种常用排序算法实现(C++)(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序以及快速排序)

    在计算机科学中,排序算法是数据处理的重要组成部分,它们用于将一组无序的数据...理解这些算法的原理并能用C++实现,对提升编程能力有很大帮助。在实际应用中,还需要根据具体需求和数据特性来选择合适的排序算法。

    希尔排序代码

    希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,...

    快速排序、选择排序、冒泡排序、希尔排序等6种排序算法C实现

    这里我们关注的是六种经典的排序算法:快速排序、选择排序、冒泡排序、希尔排序、插入排序以及懒人排序。这六种算法都是使用C语言实现的,因此对C编程有一定的基础要求。 1. **快速排序**:由英国计算机科学家C.A.R...

    希尔排序基本思想

    5. 实现方式:希尔排序可以使用各种编程语言实现,如C、C++、Java等。在C语言中,可以通过编写函数来实现希尔排序,主要涉及到数组的操作和循环控制。 6. 应用场景:希尔排序适用于需要快速排序但对稳定性要求不高...

    希尔排序.cpp 使用C++来实现

    希尔排序 希尔排序.cpp 使用C++来实现

    希尔排序希尔排序希尔排序

    一个数据结构作业,对刚刚学习希尔排序知识的同学有用,用C++做的

    快速,插入,希尔排序C实现

    排序算法 int partion(int a[],int left,int right) { int base=a[left]; while (left) { while(left[right]&gt;base) --right; a[left]=a[right]; while(left[left]) ++left; a[right]=a[left]; } ...

Global site tag (gtag.js) - Google Analytics