博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
希尔排序
阅读量:7027 次
发布时间:2019-06-28

本文共 807 字,大约阅读时间需要 2 分钟。

希尔排序主要使用插入排序的思想。

插入排序更适用于元素少的情况。所以希尔排序的主要方法就是讲数组分为一个一个更小的组,然后将每个小组用插入排序的方式排序。

分组方式:现将步长设为数组长度的一半,然后每次分组减少一步。

代码:

1 void ShellSort(int* arr,int len) 2 { 3     if(arr == NULL  || len < 0) return; 4     int step ; 5     for(step = len/2;step > 0;step--)//步数变化 6     { 7         for(int i = 0;i < step;i++)//第几组 8         { 9             for(int j = i+step; j < len;j+=step)//组中循环进行插入排序10             {11                 int k = j-step;//有序的最后一个12                 int tmp = arr[j];//无序的第一个13                 while(tmp < arr[k] && k >= i)14                 {15                    arr[k+step] = arr[k];16                    k = k - step;17                 }18                 //无序元素放入19                 arr[k+step] = tmp;20             }21         }22     }23 }

 

转载于:https://www.cnblogs.com/Lune-Qiu/p/9116050.html

你可能感兴趣的文章
TCP/IP-协议族----17、应用层简单
查看>>
ZOJ1093 动态规划
查看>>
Swift - 06 - 数值类型转换和类型别名
查看>>
原型模式与对象的拷贝
查看>>
CISCO 6509 日志分析
查看>>
AutoOps 1.8 版本
查看>>
烂泥:centos安装LVM方式
查看>>
写时拷贝(方案一)
查看>>
教程Micropython自制小型家庭气象站(萝卜教育)
查看>>
Redis源码分析系列26:对redis的一点小感触
查看>>
phpstudy 性能调优
查看>>
JDK源码解读(1)ArrayList和LinkedList
查看>>
第22讲: Scala中的闭包实战详解
查看>>
linux信号解释(1)
查看>>
串口DTU设备常见问题处理
查看>>
28.umask值
查看>>
文件操作工具类
查看>>
nginx教程从入门到精通(ttlsa出品)
查看>>
squid日志之access.log格式+内容
查看>>
我们是如何上网?
查看>>