• <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   管理


            亚洲女久久久噜噜噜熟女| 久久综合九色综合网站| 国产精品一区二区久久| 久久精品人人做人人爽电影| 狠狠色伊人久久精品综合网 | 99久久国产热无码精品免费| 成人资源影音先锋久久资源网| 久久精品国产只有精品66| 久久亚洲美女精品国产精品| 品成人欧美大片久久国产欧美| 欧美日韩精品久久免费| 香蕉久久一区二区不卡无毒影院| 久久se精品一区二区影院| 亚洲国产精品无码久久SM| 91久久精品国产91性色也| 18岁日韩内射颜射午夜久久成人| 久久se精品一区精品二区国产| 国内精品伊人久久久久av一坑 | 久久综合九色综合网站| 久久影视国产亚洲| 日韩欧美亚洲综合久久影院d3| 一本色道久久综合亚洲精品| 久久精品国产一区二区三区| 一本久久久久久久| 97久久精品无码一区二区天美| 国产aⅴ激情无码久久| 激情综合色综合久久综合| 久久综合综合久久97色| 久久久久久久亚洲Av无码| 久久久久亚洲精品日久生情| 四虎久久影院| 亚洲精品久久久www| 久久亚洲欧洲国产综合| 99国内精品久久久久久久| 99久久夜色精品国产网站| 久久r热这里有精品视频| 久久国产一区二区| 99久久精品九九亚洲精品| 国产69精品久久久久99尤物| 国产成人香蕉久久久久| 开心久久婷婷综合中文字幕|