希尔排序(Shell Sort)
来源:互联网 发布:时间浪人网络大电影 编辑:程序博客网 时间:2024/06/02 04:09
算法描述:也叫递减增量排序,是插入排序的一种更高效的改进版本,其通过将待排序的数列分为几个区域来提升插入排序的性能。希尔排序的动态图示如下所示:
复杂度分析:最坏时间复杂度为
主要特点:
- 不稳定;
- 不占用额外内存;
- 原始的希尔排序增量序列
(DM=N/2,Dk=Dk+1/2) :增量元素不互质,则小增量可能根本不起作用。
C语言描述:
#include<stdio.h>typedef int ElementType;void Swap(ElementType *A, ElementType *B) { ElementType temp = *A; *A = *B; *B = temp;}/* 原始希尔排序C语言描述 */void Shell_Sort(ElementType Data[], int N) { int D, P, i; ElementType temp; for (D = N / 2; D > 0; D /= 2) { /*原始希尔排序增量序列*/ for (P = D; P < N; P++) { /*插入排序*/ temp = Data[P]; for (i = P; i >= D && Data[i - D]>temp; i -= D) Data[i] = Data[i - D]; Data[i] = temp; } }}int main() { ElementType Data[] = {19, 3, 10, 20, 22, 28, 33, 23, 15, 30}; Shell_Sort(Data, 10); return 0;}
附:更多增量序列
- Hibbard增量序列:
Dk=2k−1 —— 相邻元素互质- 最坏情况:
Tworst=Θ(N3/2) - 猜想:
Tavg=O(N5/4)
- Sedgewick增量序列:
1,5,19,41,109,... ——9×4i−9×2i+1 或4i−3×2i+1 - 最坏情况:
Tworst=O(N4/3) - 猜想:
Tavg=O(N7/6)
阅读全文
0 0
- 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- 希尔排序(shell sort)
- 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- 希尔排序(shell sort)
- 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- 希尔排序(shell sort)
- 希尔排序(Shell Sort)
- 希尔排序(shell sort)
- Shell Sort 希尔排序
- 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- MySQL表分区使用详解
- 1057: 素数判定
- glibc源码分析之chown系列函数
- hdu6122 数学
- 【Selenium】11异常
- 希尔排序(Shell Sort)
- Spring Bean加载过程
- 51Nod 1298:圆与三角形(计算几何)
- 动态规划:word-break
- 在 request 之间共享 SecurityContext
- lower_bound与upper_bound
- 不安装oracle客户端使用plsql
- (2017多校训练第六场)HDU
- 手把手教你AndroidStudio多渠道打包