插入排序之希尔排序
来源:互联网 发布:tensorflow whl 编辑:程序博客网 时间:2024/05/22 12:32
希尔排序也属于插入类排序算法。希尔排序通过缩小增量,将待排序元素划分为若干个子序列,分别对各个子序列按照直接按照插入排序算法进行排序。当增量为1时,待排序元素构成一个子序列,对该序列排序完毕后希尔排序算法结束。
代码如下:
#include <stdio.h>void ShellSort(int a[], int length, int delta[], int m);void ShellInsert(int a[], int length, int c);void DispArray(int a[], int length);int main(){ int a[] = {48, 26, 66, 57, 32, 85, 55, 19}; int delta[] = {4, 2, 1}, m = 3, length = sizeof(a) / sizeof(a[0]); ShellSort(a, length, delta, m); printf("Result:"); DispArray(a, length); return 0;}void ShellSort(int a[], int length, int delta[], int m){ int i; for (i = 0; i < m; i++) { ShellInsert(a, length, delta[i]); printf("%dth result:", i + 1); DispArray(a, length); }}void ShellInsert(int a[], int length, int c){ int i, j, t; for (i = c; i < length; i++) { if(a[i] < a[i - c]) { t = a[i]; for(j = i - c; j >= 0 && t < a[j]; j = j - c) { a[j + c] = a[j]; } a[j + c] = t; } }}void DispArray(int a[], int length){ int i; for (i = 0; i < length; i++) { printf("%4d", a[i]); } printf("\n");}
结果如下:
阅读全文
0 0
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之--希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 内部排序之插入排序、希尔排序
- C++数据结构之栈——顺序栈的实现
- 基于Qt的海康威视网络摄像头SDK的二次开发(一)
- mysql中datatime格式转化,后台为node
- echarts 动态获取数据demo
- FragmentPagerAdapter和FragmentStatePagerAdapter的区别
- 插入排序之希尔排序
- DOS批处理高级教程 第五章 set命令详解
- 在docker下查看对应的微服务日志
- POJ
- 欢迎使用CSDN-markdown编辑器
- DOS批处理高级教程 第六章 if命令讲解
- Python---快捷按键
- CS231n学习笔记--15. Efficient Methods and Hardware for Deep Learning
- gcd && lcm