第15周—项目5 希尔排序
2015-12-07 17:27
288 查看
问题描述及代码:
1.希尔排序
运行结果:
![](https://img-blog.csdn.net/20151214160920999)
知识点总结:
就是一种分组插入的方法。先确定增量d,把全部的分组分成d个组,在各个组内进行直接插入排序
学习心得:
理清思路
#ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED /* *烟台大学计控学院 *作 者:杨征 *完成日期:2015年12月7日 *问题描述:希尔排序 */ #endif // BTREE_H_INCLUDED
1.希尔排序
#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; }
运行结果:
知识点总结:
就是一种分组插入的方法。先确定增量d,把全部的分组分成d个组,在各个组内进行直接插入排序
学习心得:
理清思路
相关文章推荐
- init()方法调用及扩展
- <2>Android Camera 架构简析1
- mysql导数据及注意事项
- 对加密数据的高效相似性查询(二)
- java之运算符
- slice()方法 和splice 方法的区别。。。
- Qt学习(3)
- 运维人员需要产品观
- linux那些鲜为人知的小秘密
- Android Studio 断点调试和高级调试
- Git-0.99 README 第一部分 基本对象
- jQuery + CSS3 实现花瓣剥落特效
- 矩阵存储之三
- 堆排序
- 如何允许外网可以连接mysql数据库
- java之hashCode
- Python机器学习库scikit-learn实践
- Java线程编程中Thread类的基础学习教程
- 第四周项目三--单链表的应用
- Java获取文件类型Mime Type的各种方法