C++ 希尔排序算法
来源:互联网 发布:java定时器 任务超时 编辑:程序博客网 时间:2024/04/30 08:21
1.希尔排序的思想
希尔排序是插入排序的一种优化,其思想为将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小的增量,再将数组分割为多个子序列进行排序......最后选择增量为1,即使用直接插入排序,使最终数组成为有序。
增量的选择上比较普遍是一半一半递减选取,10个数字无序序列,增量是len/2,然后不断缩短,最后一次增量为1.
2.算法分析
空间复杂度:O(1)
时间复杂度 有人通过大量的实验,给出了较好的结果:当n较大时,比较和移动的次数约在nl.25到1.6n1.25之间。
3.算法实现
void ShellSort(){int gap = len/ 2;//初始增量为数组长度的一半while (1 <= gap) {for (int i = gap; i < len ; i++) {int j = 0;int temp = iRawBuff[i];for (j = i - gap; j >= 0 && temp < iRawBuff[j]; j = j - gap){iRawBuff[j + gap] = iRawBuff[j];}iRawBuff[j + gap] = temp;}gap = gap / 2; 增量为上次的二分之一}for (int k = 0; k < len; k++){cout << iRawBuff[k] << " ";}cout << endl;}
0 0
- 算法 - 希尔排序(C)
- C 语言算法排序 希尔
- 排序算法之希尔排序(C/C++)
- 排序算法c语言描述---希尔排序
- 排序算法(C实现)------- 希尔排序
- 排序算法系列---希尔排序(C++)
- C语言实现排序算法---希尔排序
- 希尔排序算法实现(C++)
- 算法导论 之 希尔排序[C语言]
- 希尔排序算法实现(C++)
- 算法实现之希尔排序(C++)
- 【算法】希尔排序C语言实现
- 算法 c语言 shell希尔排序
- 经典排序算法---希尔排序(C/C#)
- 排序算法--希尔排序
- 排序算法-希尔排序
- 排序算法--希尔排序
- 排序算法--希尔排序
- IO流前奏之异常和File类
- leetcode刷题日记——Remove Duplicates from Sorted List
- hdoj2111Saving HDU(贪心)
- [Jquery]hover实现table表单的特效显示
- 基于模板元编程技术的跨平台C++动态链接加载库
- C++ 希尔排序算法
- 英国政府开源了其大规模监控软件
- 什么是持久化? 为什么要持久化?
- Your build settings specify a provisioning profile with the UUID
- ListView——HolderView方式
- opencv笔记 5.形态学滤波
- python反射机制
- 基础控件之UILabel、UIButton、UITextField、UIAlertView、 UIImageView
- linux 下core文件的设置