希尔排序(c++实现)
来源:互联网 发布:linux cpu 多核 切换 编辑:程序博客网 时间:2024/05/22 08:17
希尔(Shell)排序的基本思想是:先取一个小于n的整数d1作为第一个增量把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取得第二个增量d2<d1重复上述的分组和排序,直至所取的增量di=1,即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种分组插入方法。
一般取d1=n/2,di+1=di/2。如果结果为偶数,则加1,保证di为奇数。
代码:
// 希尔排序.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>#include<string>using namespace std;void shellSort(int a[],int length);int main(){int array[]={3,7,1,5,4};int length=sizeof(array)/sizeof(int);cout<<"before sort"<<endl;for(int i=0;i<length-1;i++){cout<<array[i]<<' ';}cout<<array[length-1]<<endl;shellSort(array,sizeof(array)/sizeof(int));cout<<"after sort"<<endl;for(int i=0;i<length-1;i++){cout<<array[i]<<' ';}cout<<array[length-1]<<endl;return 0;}void shellSort(int a[],int length){int step;step=length/2;if(step%2==0){step++;}while(step>0){for(int j=step;j<length;j++){int temp=a[j];int i=j-step;while(i>=0&&a[i]>temp){a[i+step]=a[i];i=i-step;}if(i!=j-step)a[i+step]=temp;}if(step==1)break;step=step/2;if(step%2==0)step++;}}结果:
阅读全文
0 0
- 排序算法(C实现)------- 希尔排序
- 希尔排序算法实现(C++)
- 希尔排序(C语言实现)
- 希尔排序算法实现(C++)
- 算法实现之希尔排序(C++)
- 希尔排序(C语言实现)
- 希尔排序(C语言实现)
- 希尔排序(C语言实现)
- 希尔排序(c++)
- C语言实现希尔排序
- c语言实现希尔排序
- C语言实现希尔排序
- 希尔排序C语言实现
- 希尔排序-C语言实现
- 希尔排序c语言实现
- 希尔排序-c语言实现
- 排序算法之希尔排序(C语言实现)
- 快速排序C语言实现(递归)和希尔排序
- (转)java语言:从尾到头打印链表
- 如何使用Git和Github来管理自己的代码和学习笔记
- CODE[VS]1013 求先序排列
- Linux环境PHP5.5以上连接SqlServer2012
- 深入剖析Android四大组件(二)——Service服务之启动与绑定
- 希尔排序(c++实现)
- leetcode 60. Permutation Sequence 第K个全排列
- malloc函数和calloc函数的区别
- FastDFS关键配置说明,包括文件同步和安全设置。
- DPDK-THREAD SAFETY OF DPDK FUNCTIONS(线程安全函数)
- Java 集合转数组(String类型)
- 规定数字格式--DecimalFormat的使用
- spring mvc问题之为何多注入了一个BeanNameUrlHandlerMapping?
- STL源码分析set