希尔排序(分组插入法)
来源:互联网 发布:数据自动统计分析方法 编辑:程序博客网 时间:2024/04/30 12:26
#include <stdio.h>
#include <stdlib.h>
#include <string>
void SortGroup(int *pnData,int nLen,int nBegin,int nStep)
{
int i,j,k,nTemp;
for(i = nBegin+nStep;i<nLen;i+=nStep)
{
//寻找I的位置
for(j=nBegin;j<i;j+=nStep)
{
//如果比他小 则这里就是他的位置
if(pnData[i]<pnData[j])
{
nTemp = pnData[i];
for(k=i;k>j;k -= nStep)
{
pnData[k] = pnData[k-nStep];
}
pnData[j] = nTemp;
}
}
}
}
///希尔排序,pndata要排序的数据,nLen数据的个数
void ShellSort(int *pnData,int nLen)
{
int nStep,i;
//以nStep分组,nStep每次减为原来的一半;
for(nStep =nLen/2;nStep>0;nStep/=2)
{
//对每个分组进行排序
for(i=0;i<nStep;++i)
{
SortGroup(pnData,nLen,i,nStep);
}
}
}
int main()
{
int nData[8] = {49,38,65,97,76,13,27,49};
int i=0,len;
printf("排序前:\n");
for(i = 0;i <8;++i)
{
printf("%d ",nData[i]);
}
printf("\n");
ShellSort(nData,8);
printf("排序后:\n");
for(i = 0;i <8;++i)
{
printf("%d ",nData[i]);
}
printf("\n");
return 0;
}
#include <stdlib.h>
#include <string>
void SortGroup(int *pnData,int nLen,int nBegin,int nStep)
{
int i,j,k,nTemp;
for(i = nBegin+nStep;i<nLen;i+=nStep)
{
//寻找I的位置
for(j=nBegin;j<i;j+=nStep)
{
//如果比他小 则这里就是他的位置
if(pnData[i]<pnData[j])
{
nTemp = pnData[i];
for(k=i;k>j;k -= nStep)
{
pnData[k] = pnData[k-nStep];
}
pnData[j] = nTemp;
}
}
}
}
///希尔排序,pndata要排序的数据,nLen数据的个数
void ShellSort(int *pnData,int nLen)
{
int nStep,i;
//以nStep分组,nStep每次减为原来的一半;
for(nStep =nLen/2;nStep>0;nStep/=2)
{
//对每个分组进行排序
for(i=0;i<nStep;++i)
{
SortGroup(pnData,nLen,i,nStep);
}
}
}
int main()
{
int nData[8] = {49,38,65,97,76,13,27,49};
int i=0,len;
printf("排序前:\n");
for(i = 0;i <8;++i)
{
printf("%d ",nData[i]);
}
printf("\n");
ShellSort(nData,8);
printf("排序后:\n");
for(i = 0;i <8;++i)
{
printf("%d ",nData[i]);
}
printf("\n");
return 0;
}
0 0
- 希尔排序(分组插入法)
- 希尔排序的实质就是分组插入排序
- 希尔排序的实质就是分组插入排序
- 数据结构-算法: 插入排序(希尔排序法)
- 数据结构-算法: 插入排序(希尔排序法)
- 插入排序--希尔排序
- 插入排序 希尔排序
- 插入排序--希尔排序
- 插入排序,希尔排序
- 插入排序:希尔排序
- 插入排序-希尔排序
- 插入排序(希尔排序)
- 【插入排序】希尔排序
- 插入排序、希尔排序
- 插入排序,希尔排序
- 插入排序希尔排序
- 插入排序-希尔排序
- 插入排序-希尔排序
- 对象模型图【OMD】阅读指南
- 学习记录
- Java Doc 建议不要使用 JPasswordField.getText()
- 3.进程间的软中断通信
- POJ训练计划3349_Snowflake Snow Snowflakes(哈希)
- 希尔排序(分组插入法)
- 分析cocos2d-x是如何异步的去加载图片
- 联想 笔记本 Lenovo Y410P 在 Linux Ubuntu 下 Wifi无线网不能搜索的问题 博通Broadcom 43xx 无线网卡驱动安装 插耳机后爆破的声音 拔电源后吱吱硬盘声音
- 设计模式——创建型模式
- 基于vim的golang开发环境配置
- 【剑指offer】扑克牌的顺子
- Redhat 系统更换配置yum源
- 欢迎使用马克飞象专业版
- Mockito的使用笔记