希尔排序c语言,希尔排序(C/C++实现)
封装成函数:
//交换数组元素
void swap(int *a,int i,int j)
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
//希尔排序
void shell_sort(int *a,int len)
{
int h=1,i,j;
while(h
{
h = 3*h+1;
}
while(h>=1)
{
//将数组变为间隔h个元素有序
for (i = h; i < len; i++)
{
//间隔h插入排序
for (j = i; j >= h && a[j] < a[j-h]; j -= h)
{
swap(a, j, j-h);
}
}
h /= 3;
}
}
测试:
//打印输出数组
void print_arr(int *a,int len)
{
int i;
if(len<1) //数组长度必须大于0
{
printf("length greater than 0");
return;
}
//打印整个数组
printf("[");
for(i=0; i
{
printf("%d ",a[i]);
}
printf("%d]\n",a[len-1]);
}
int main()
{
int a[] = {9,0,6,5,8,2,1,7,4,3};
int len = sizeof(a)/sizeof(int);
print_arr(a,len);
shell_sort(a,len);
print_arr(a,len);
return 0;
}
输出:
[9 0 6 5 8 2 1 7 4 3]
[0 1 2 3 4 5 6 7 8 9]
希尔排序c语言,希尔排序(C/C++实现)相关推荐
- python如何给字符串排序_Python语言字符串排序方法
本文主要向大家介绍Python语言字符串排序方法了,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 一般情况下,python中对一个字符串排序相当麻烦:一.python中的字符串类 ...
- matlab实现希尔排序,C语言希尔排序算法
用希尔排序法对一组数据由小到大进行排序,数据分别为 69.56.12.136.3.55.46. 99.88.25. 实现过程: (1)自定义函数 shsort(),实现希尔排序. (2) main() ...
- 桶排序c语言,桶排序(Bucket Sort)的数组实现
桶排序的数组实现 桶排序Bucket Sort从1956年就开始被使用,该算法的基本思想是由E. J. Issac R. C. Singleton提出来. 桶排序(Bucket Sort)是迄今为止最 ...
- c语言选择排序_C语言——选择排序
1 选择排序(5分) 题目内容:编写选择排序,要求排序过程调用函数实现,在主函数输入n个数据,调用函数后,输出排好序的元素输入格式:输入整型数n,并输入n个整数,输入数据用空格隔开输出格式:输出排好序 ...
- 用C语言对单词首字母进行排序,c语言单词排序
满意答案 ajuum2d8l 推荐于 2017.09.12 采纳率:59% 等级:10 已帮助:674人 程序第一次运行时,会创建一个"word.txt"(不包括引号)的文本 ...
- C语言希尔排序(解析)
C语言希尔排序(解析) 网上找的移动图:
- 图解,C语言希尔排序
希尔排序和插入排序很相似,有点像插入排序的升级版本. 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法.希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本 ...
- C语言希尔排序及其增量序列
希尔排序 前情提要:C语言排序算法 插入排序的神奇之处在于,只要运气够好,甚至可以达到O(n)O(n)O(n)的时间复杂度,希尔排序的思想就是想办法放大这种运气. 希尔排序又称缩小增量排序,据说是第一 ...
- 希尔排序(C语言简单实现)
希尔排序(C语言简单实现) 希尔排序是直接插入排序的升级版,直接插入排序每次增量是1,但希尔排序的增量increment比1大,也就是说直接插入排序是一个一个比较的,但是希尔排序是跳着来的,从而实现顺 ...
最新文章
- Codeforces Round #699 (Div. 2) E.Sorting Books(贪心+DP / 线段树)超高质量题解,看不懂来打我 ~
- Linux从入门到精通系列之SHELL编程循环语句语法及实例详解(forwhileuntil)
- 理解和使用systrace
- C语言跟随鼠标画方框,JS拖动鼠标画出方框实现鼠标选区的方法
- windows 环境怎样恢复 (oracle 11g grid) ocr voting 损坏的集群
- ECS vs K8S
- mybatis一对一联表查询的两种常见方式
- QLabel 图片大小设定
- 攻击者“完全自动化”发动NPM供应链攻击
- Android系统架构
- 华盛顿道格拉斯县计划建立区块链创新园区
- 洪水攻击程序c语言,洪水攻击原理及代码实现全攻略(附源代码)病毒防范 -电脑资料...
- 图像处理领域术语英文对应
- 如何通过软文营销提高用户黏性 做好品牌推广和营销宣传
- 2017年总结—颓废的一年
- Netty框架之Selector轮询器
- make_unique的使用
- 【联机对战】微信小程序联机游戏开发流程详解
- 【转】git中如何忽略xcuserstate
- 为什么停用CentOS?
热门文章
- pytorch 指定卡1_[原创][深度][PyTorch] DDP系列第一篇:入门教程
- linux joe复制一行,Linux joe命令
- if not exist Oracle,oracle 兑现 if not exist 方法
- mockito_Mockito:无法实例化@InjectMocks字段:类型是接口
- junit5_使用JUnit对ADF应用程序进行单元测试
- 最长公共子序列_Java恶意序列化背后的历史和动机
- 这些 IDEA 的优化设置赶紧安排起来,效率提升不是一点点!
- 耗时6个月整理的最全Java资源,限时删
- Spring Cloud Alibaba基础教程:使用Sentinel实现接口限流
- 使用Swagger2Markup实现API文档的静态部署(一):AsciiDoc