算法(第四版)讀書筆記--排序(2)希爾排序

希爾排序是基於插入排序的快速的排序算法,中心思想是一個h有序數組就是h個互相獨立的有序數組組成的。代碼如下


public class Sort_Shell
{
    public static void Sort<T>(List<T> v) where T : IComparable
    {
        int N = v.Count;
        int h = 1;
        while (h < N / 3)
        {
            h = h * 3 + 1;
        }
        while (h >= 1)
        {
            //將數組變成h有序
            for (int i = h; i < N; i++)
            {
                //將v[i]插入到a[i-h] a[i-2h]....之中
                for (int j = i; j > 0 && v[j].CompareTo(v[j - h]) < 0; j -= h)
                {
                    Sort_Templet.exch<T>(v, j, j - h);
                }
            }
            h = h / 3;
        }
        for (int i = 1; i < N; i++)
        {
            int j = i;
            for (; j > 0 && v[j].CompareTo(v[j - 1]) < 0; j--)
            {
                Sort_Templet.exch<T>(v, j, j - 1);
            }
        }

    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章