希尔排序

希尔排序:可看作直接插入排序的改进版.

基本思想:

将整个待排序序列,按照一定的间距gap分割成若干个子序列.然后再分别进行直接插入排序.最后,对全体元素进行直接插入排序.

时间复杂度: O(n)-->O(n^2)

空间复杂度:O(1)

是否稳定排序:不稳定


void ShellSort(int array[], int n)
{
    for (int gap = n / 2; gap > 0; --gap)
    {
        for (int i = gap; i < n; ++i)
        {
            int temp = array[i];
            int j = i;
            while (j > 0 && array[j - gap] > temp)
            {
                array[j] = array[j - gap];
                j -= gap;
            }
            array[j] = temp;
        }
    }
}

 

 

 

posted @ 2016-07-15 16:32  715776681  阅读(125)  评论(0编辑  收藏  举报