希尔排序
// 希尔排序.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++实现
数据结构排序算法中的希尔(shell)排序,可供初学者参考
c++平台上实现希尔排序算法,完整的源代码,vc平台运行。
binary sort,二分法查找,binary search, 二分法排序,merge sort 混合排序,shell sort 希尔排序,insertion sort 插入排序。数据结构 data structure
希尔排序(Shell's Sort)是插入排序的一种,又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而...
C++实现希尔、快速、堆排序、归并排序算法,一些中文注释可能成乱码了,但是不影响代码执行。
用C++,模板写的 7中排序. 快速排序, 归并排序,插入排序,选择排序,起泡排序,堆排序,希尔排序
C++ 实现的一个简单的希尔排序的示例代码,写的比较简单,VC环境下运行通过了,给大家学习使用吧,直接copy进去运行就行了
一个数据结构作业,对刚刚学习希尔排序知识的同学有用,用C++做的
程序实现希尔排序,C语言入门程序,适合C语言课程入门的小练习。 程序实现希尔排序,C语言入门程序,适合C语言课程入门的小练习。 程序实现希尔排序,C语言入门程序,适合C语言课程入门的小练习。
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,...
快速排序、选择排序、冒泡排序、希尔排序、插入排序、懒人排序等6种排序算法C实现
本文件是7种常用排序算法的实现(C++),包括冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序以及快速排序。代码详细有注释且有测试用例。
希尔排序的源代码; 平台:CentOS release 5.4 (Final) 编译器:GCC 4.3.2
c++实现的线性表排序算法 插入排序,希尔排序,冒泡排序,快速排序,堆排序,归并排序等
希尔排序 希尔排序.cpp 使用C++来实现
排序算法 int partion(int a[],int left,int right) { int base=a[left]; while (left) { while(left[right]>base) --right; a[left]=a[right]; while(left[left]) ++left; a[right]=a[left]; } ...
C++实现的学生成绩管理软件(堆排序、冒泡排序、希尔排序、快速排序) 成绩插入,删除等
希尔排序,C++实现,VS2010,完整工程文件,含注释