• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              19 隨筆 :: 0 文章 :: 7 評論 :: 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) 評論(0)  編輯 收藏 引用
            精品久久久久久久| 精品久久亚洲中文无码| 9999国产精品欧美久久久久久 | 狠狠色综合久久久久尤物| 91麻豆精品国产91久久久久久| 99久久亚洲综合精品成人| 久久强奷乱码老熟女网站| 无码人妻久久一区二区三区蜜桃 | 亚洲嫩草影院久久精品| 三级片免费观看久久| 国产三级久久久精品麻豆三级 | 久久超碰97人人做人人爱| 国产精品99久久久久久www| 久久久久波多野结衣高潮| 国产成人精品免费久久久久| 久久久久香蕉视频| 久久精品国产亚洲AV高清热| 午夜精品久久久内射近拍高清| 精品久久无码中文字幕| 国产精品中文久久久久久久| 伊人久久综在合线亚洲2019| 色综合久久无码中文字幕| 色欲综合久久躁天天躁| 精品久久久久久久| 久久香蕉超碰97国产精品| 性高朝久久久久久久久久| 人人狠狠综合久久亚洲88| 精品久久久久中文字幕日本| 一本久久a久久精品亚洲| 欧美亚洲另类久久综合婷婷 | 日韩欧美亚洲综合久久| 国产精品久久久久久久久久免费| 久久夜色精品国产网站| 婷婷久久香蕉五月综合加勒比| 久久综合鬼色88久久精品综合自在自线噜噜 | 成人精品一区二区久久久| 好久久免费视频高清| 狠狠色丁香婷综合久久| 久久99精品久久久久久| 精品久久久久久| 亚洲国产精品久久久久久|