第十四周项目3-插入排序之希尔排序
2017-12-07 11:17
316 查看
/*
Copyright (c++) 2017,烟台大学计算机与控制工程学院
文件名称:progame
作 者:白苗苗
完成日期:2017年12月7日
版 本 号:12.11
问题描述:插入排序之希尔排序
*/
#include <stdio.h>
#define MaxSize 20
typedef int KeyType; //定义关键字类型
typedef char InfoType[10];
typedef struct //记录类型
{
KeyType key; //关键字项
InfoType data; //其他数据项,类型为InfoType
} RecType; //排序的记录类型定义
void ShellSort(RecType R[],int n) //希尔排序算法
{
int i,j,gap;
RecType tmp;
gap=n/2; //增量置初值
while (gap>0)
{
for (i=gap; i<n; i++) //对所有相隔gap位置的所有元素组进行排序
{
tmp=R[i];
j=i-gap;
while (j>=0 && tmp.key<R[j].key)//对相隔gap位置的元素组进行排序
{
R[j+gap]=R[j];
j=j-gap;
}
R[j+gap]=tmp;
j=j-gap;
}
gap=gap/2; //减小增量
}
}
int main()
{
int i,n=11;
RecType R[MaxSize];
KeyType a[]= {16,25,12,30,47,11,23,36,9,18,31};
for (i=0; i<n; i++)
R[i].key=a[i];
printf("排序前:");
for (i=0; i<n; i++)
printf("%d ",R[i].key);
printf("\n");
ShellSort(R,n);
printf("排序后:");
for (i=0; i<n; i++)
printf("%d ",R[i].key);
printf("\n");
return 0;
}
学习心得:可以结合画图来搞懂原理
Copyright (c++) 2017,烟台大学计算机与控制工程学院
文件名称:progame
作 者:白苗苗
完成日期:2017年12月7日
版 本 号:12.11
问题描述:插入排序之希尔排序
*/
#include <stdio.h>
#define MaxSize 20
typedef int KeyType; //定义关键字类型
typedef char InfoType[10];
typedef struct //记录类型
{
KeyType key; //关键字项
InfoType data; //其他数据项,类型为InfoType
} RecType; //排序的记录类型定义
void ShellSort(RecType R[],int n) //希尔排序算法
{
int i,j,gap;
RecType tmp;
gap=n/2; //增量置初值
while (gap>0)
{
for (i=gap; i<n; i++) //对所有相隔gap位置的所有元素组进行排序
{
tmp=R[i];
j=i-gap;
while (j>=0 && tmp.key<R[j].key)//对相隔gap位置的元素组进行排序
{
R[j+gap]=R[j];
j=j-gap;
}
R[j+gap]=tmp;
j=j-gap;
}
gap=gap/2; //减小增量
}
}
int main()
{
int i,n=11;
RecType R[MaxSize];
KeyType a[]= {16,25,12,30,47,11,23,36,9,18,31};
for (i=0; i<n; i++)
R[i].key=a[i];
printf("排序前:");
for (i=0; i<n; i++)
printf("%d ",R[i].key);
printf("\n");
ShellSort(R,n);
printf("排序后:");
for (i=0; i<n; i++)
printf("%d ",R[i].key);
printf("\n");
return 0;
}
学习心得:可以结合画图来搞懂原理
相关文章推荐
- 第十四周——项目一验证算法(3)插入排序之希尔排序
- 第十五周项目1 验证算法(2)插入排序之希尔排序
- 第十四周项目2-直接插入排序
- 第十四周 项目一 验证算法 2.直接插入排序
- 第十四周项目一(2)——验证算法之直接插入排序
- 第十四周——项目一验证算法(2)插入排序之直接插入排序
- 第十六周--数据结构--项目一-- 插入排序之希尔排序
- 第十六周 项目一 (2)插入排序之希尔排序
- 第16周项目1-插入排序之希尔排序(2)
- 第16周项目插入排序之希尔排序
- 【【第16周-内部排序项目3—插入排序之希尔排序】】
- 第十六周 项目一(2).插入排序之希尔排序
- 第十四周项目一(2)——验证算法之直接插入排序
- 第十六周项目1-验证算法插入排序之希尔排序
- 插入排序之希尔排序
- python排序算法-冒泡排序,选择排序,直接插入排序,希尔排序,归并排序,快速排序,堆排序
- 第十四周项目2——二叉树排序树中查找的路径
- 排序总结JS版(冒泡排序、简单选择排序、快速插入排序、希尔排序、堆排序、快速排序)
- 直接插入排序、希尔排序—C—Python
- 排序算法: 冒泡排序, 快速排序,希尔排序,直接插入排序 ,直接选择排序,归并排序,堆排序