我理解的希尔排序
来源:互联网 发布:买到淘宝假货怎么投诉 编辑:程序博客网 时间:2024/05/24 05:57
待排数组:a= {49,38,65,97,26,13,27,49,55,04};
希尔排序是插入排序的一种,可以理解为变步长的插入排序,我觉着更确切的说插入排序是希尔排序的最后一步,即:将数组分成一组的情况。希尔算法大体如下:a.length/2,分组得到步长,然后对分组数据进行插入排序,直到步长为0。
我利用vs2008编写了一个程序实现希尔排序,程序如下:
// InsertSort.c.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdio.h"
void ShellInsert(int A[],const int num,int step,int n ){
int temp =0;int j=0;
for(int i = n;i+step <num;i += step)
{
temp = A[i+step];//待排的元素
for( j = i;j >= n ; j -= step){
if(temp >= A[j]){
A[j+step] = temp;
break;
}
else{
A[j+step] = A[j];
}
}
if(j < n)
A[n] = temp;
}
}
void Group(int A[], const int num){
//int num = sizeof(A)/sizeof(int);
static int i=0;
int step = num;
while(step=(step)/2){
i = 0;
for(int j =0;j < num ;j++)//num :表示分了几组
{
ShellInsert(A,num,step,i);//i:表示从那开始插入
i++;
}
for(int i=0;i<num;i++)
printf("%d\t",A[i]);
printf("\n");
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[] = {49,38,65,97,26,13,27,49,55};
int num = sizeof(a)/sizeof(int);
printf("%ld\n",num);
Group(a,num);
getchar();
return 0;
}
- 我理解的希尔排序
- 我对希尔排序的理解
- 希尔排序的理解
- OC:希尔排序的理解
- 希尔(Shell)排序的理解
- 希尔排序理解
- 深入理解希尔排序
- 希尔排序—自理解
- 希尔排序的简单实现及理解思路
- 理解希尔排序,缩减增量排序
- java关于插入排序—希尔排序的理解,以及冒泡排序的改进
- 改进的希尔排序
- 希尔排序的实现
- 希尔排序的实现
- java的希尔排序
- 希尔排序的实现
- 希尔排序的体会
- 希尔排序的实现
- codeforces 505B B. Mr. Kitayuta's Colorful Graph-爆搜/DP
- Spring4.1新特性——Spring MVC增强
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- 编程实现strcpy函数功能(非库函数)
- 沉浸式状态栏源码分析
- 我理解的希尔排序
- linux消息队列
- iOS个人整理29-JSON与xml文件解析
- android如何隐藏头部的标题栏全屏显示
- BZOJ3224普通平衡树
- opencv 图像去噪要点总结
- Spring4.1新特性——Spring缓存框架增强
- 代码开发注释规范
- LeetCode中链表的试题