• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            DraculaW

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              19 隨筆 :: 0 文章 :: 7 評(píng)論 :: 0 Trackbacks
            /////////////////////////////////////////////////////////////////////////////////

            // The Sort //

            // //

            /////////////////////////////////////////////////////////////////////////////////
            #ifndef _SORT_H_

            #define _SORT_H_
            /////////////////////////////////////////////////////////////////////////////////

            // The QuickSort //

            // //

            /////////////////////////////////////////////////////////////////////////////////
            template<typename T>

            int Quick(T* a, int s, int e)

            {

                T t = a[e];

                int i = s - 1;

                for(int j = s; j < e; j++ )

                    if(a[j] <= t)

                    {

                        i++;

                        swap(a[j],a[i]);

                    }



                    swap(a[i+1], a[e]);

                    return i+1;

            }
            template<typename T>

            void QuickSort(T* a, int s, int e)

            {

                if( s < e )

                {

                    int i = Quick(a, s, e);

                    //int i = part(a, s, e);

                    QuickSort(a, s, i-1);

                    QuickSort(a, i+1, e);

                }

            }
            /////////////////////////////////////////////////////////////////////////////////

            // The HeapSort //

            // //

            /////////////////////////////////////////////////////////////////////////////////

            inline int left(int i)

            {

                return 2*i+1;

            }
            inline int right(int i)

            {

                return 2*i+2;

            }
            template<typename T>

            void HeapHy(T* a, int n, int i)

            {

                int big = i;

                //first find the lage of i, left(i),right(i)

                if(left(i) < n)

                {

                    big = a[i]>a[left(i)]?(i):(left(i));

                    if(right(i) < n)

                        big = a[big]>a[right(i)]?(big):(right(i));

                }

                //and if the i not the biggest change pos i with the bigest

                if(i!=big)

                {

                    swap(a[i], a[big]);

                    //then HeapHy(a, n, bigest)

                    HeapHy(a, n, big);

                }

            }
            template<typename T>

            void BuildHeap(T* a, int n)

            {

                for(int i = n/2; i > -1; i--)

                    HeapHy(a, n, i);

            }
            template<typename T>

            void HeapSort(T* a, int n)

            {

                BuildHeap(a, n);

                for(int i=n-1; i>0; i--)

                {

                    swap(a[0], a[i]);

                    HeapHy(a, i, 0);

                }

            }
            /////////////////////////////////////////////////////////////////////////////////

            // The ShellSort //

            // //

            /////////////////////////////////////////////////////////////////////////////////
            template<typename T>

            void ShellSort(T* a, int s)

            {

                T t;

                int i,j,k;

                for(i=s/2; i>0; i=i/3)

                {

                    for(j=i; j<s; j++)

                    {

                        t = a[j];

                        for(k=j-i; k>-1; k-=i)

                        {

                            if(a[k]>t)

                                a[k+i] = a[k];

                        }

                        a[k+i] = t;

                    }

                }

            }
            #endif //_SORT_H_
            posted on 2007-11-15 20:27 DraculaW 閱讀(140) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久精品国产久精国产| 国产亚洲美女精品久久久| 日韩久久久久中文字幕人妻| 久久免费大片| 精品久久8x国产免费观看| 国产精品久久久久9999| 久久久91人妻无码精品蜜桃HD| 久久99九九国产免费看小说| 国内精品人妻无码久久久影院| 久久久WWW成人免费精品| 久久大香香蕉国产| 欧美一区二区久久精品| 97久久超碰国产精品旧版| 午夜福利91久久福利| WWW婷婷AV久久久影片| 奇米影视7777久久精品人人爽| 久久天堂电影网| 亚洲级αV无码毛片久久精品| 久久国产美女免费观看精品| 精品久久久久久无码中文字幕一区| 久久这里只有精品视频99| 久久午夜电影网| 69SEX久久精品国产麻豆| 一本一本久久aa综合精品| 欧美粉嫩小泬久久久久久久| 国产人久久人人人人爽| 亚洲日本va中文字幕久久| 色婷婷狠狠久久综合五月| 国产精品内射久久久久欢欢| 久久久国产乱子伦精品作者 | 国产成年无码久久久免费| 久久国产影院| 国产一区二区三精品久久久无广告| 久久精品亚洲日本波多野结衣 | 成人免费网站久久久| 亚洲国产精品一区二区久久hs | 影音先锋女人AV鲁色资源网久久 | 国产精品9999久久久久| 久久精品国产精品亚洲毛片 | 亚洲国产精品无码久久SM| 久久精品免费一区二区|