zoukankan      html  css  js  c++  java
  • 排序 —— 希尔排序(Shell sort)

    希尔排序(Shell sort)的名称源于它的发明者 Donald Shell,该算法是冲破二次时间屏障(冒泡和插入排序,基于相邻元素的交换)的第一批算法。希尔排序改进了冒泡和插入排序的相邻元素才进行交换,而是比较相距一段距离的元素来工作,各趟比较所用的距离随着算法的进行而减少,直到只比较相邻元素的最后一趟排序为止。正是因为这样的工作机制,希尔排序有时也称为缩小增量排序(diminishing increment sort)

    typedef int ElementType;
    
    void ShellSort (ElementType A[], int N) {
    
        int Increment, i, j;
        ElementType Tmp;
    
        for (Increment = N/2; Increment >= 0; Increment /= 2) {
    
            for (i = Increment; i < N; ++i) {
                Tmp = A[i];
                for (j = i; j >= Increment; j -= Increment) {
                    if (Tmp < A[j-Increment])
                        A[j] = A[j-Increment];
                    else break;
                            // 尤其注意这里的 break;
                }
                A[j] = Tmp;
            }
        }
    }
  • 相关阅读:
    2014年广州区域赛k题解
    2014年广州区域赛e题解
    2014年广州区域赛i题解
    最大化平均值问题
    codeforces 976e 题解
    maven
    机器学习入门
    拟合
    插值
    熵权法
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423491.html
Copyright © 2011-2022 走看看