算法代码实现之希尔排序,C/C++实现
来源:互联网 发布:java反射的应用 编辑:程序博客网 时间:2024/06/06 03:41
封装成函数:
//交换数组元素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<len/3) //寻找合适的间隔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<len-1; 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]
1 0
- 算法代码实现之希尔排序,C/C++实现
- 算法实现之希尔排序(C++)
- 排序算法之希尔排序(C语言实现)
- 排序算法之希尔排序<Shell_Sort>及其C语言代码实现
- 排序算法(C实现)------- 希尔排序
- C语言实现排序算法---希尔排序
- 希尔排序的c语言实现代码
- 希尔排序算法实现(C++)
- 希尔排序算法实现(C++)
- 【算法】希尔排序C语言实现
- 数据结构之---C语言实现希尔排序
- 排序算法之希尔排序(C/C++)
- 算法代码实现之希尔排序,Golang(Go语言)实现
- 算法代码实现之希尔排序,Java实现
- C语言实现希尔排序
- c语言实现希尔排序
- C语言实现希尔排序
- 希尔排序C语言实现
- 《玩不够的数学:算术与几何的妙趣》:第一章 平面上的几何艺术
- bzoj1227(排列组合+树状数组)
- C/C++笔试题
- 201. Bitwise AND of Numbers Range【M】【80】【leetcode】
- Spark Streaming 图片处理案例介绍
- 算法代码实现之希尔排序,C/C++实现
- ubuntu 中文输入法设置
- 欧几里德算法(最大公约数算法)
- C#找梅森素数
- 2015总结
- 四舍五入到特定的小数位置
- java 自定义序列化
- Mysql Notes
- GeekBand c++学习笔记——防卫式声明的背后