希尔排序(Shell Sort)

2020-12-13 02:28

阅读:291

标签:分析   增量排序   pre   复杂度   不同   需要   必须   复杂   代码   

希尔排序

思路分析:希尔排序又叫缩小增量排序,通过指定增量序列(尽量取素数且最小增量必须为1)对需要进行排序的数组进行分组,然后每组内部进行一次直接插入排序,不断缩小增量,直到增量为1排序完成。

时间复杂度:不同增量序列时间复杂度不同(希尔增量序列时间复杂度为O(n2)、帕斯增量序列时间复杂度为O(n1.5))。

代码:

void ShellSort(int R[],int n)
{
    int i,j,delta;
    for(delta=n/2;delta>0;delta/=2) //此处增量序列取希尔增量序列(n/2,n/4....)
    {
        for(i=0;i=0&&R[k]>temp)
                    {
                        R[k+delta]=R[k];
                        k-=delta;
                    }
                    R[k+delta]=temp; //插入元素
                }
            }
        }
}

希尔排序(Shell Sort)

标签:分析   增量排序   pre   复杂度   不同   需要   必须   复杂   代码   

原文地址:https://www.cnblogs.com/sunnylux/p/11039887.html


评论


亲,登录后才可以留言!