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

            我所理解的快速排序算法
                  快速排序是在實(shí)踐中最快的已知排序算法,它的平均運(yùn)行時間是O(NlogN)。該算法之所以特別快,主要是由于非常精練和高度優(yōu)化的內(nèi)部循環(huán)。在隊列中尋找合適的樞點(diǎn)元素,并按樞點(diǎn)元素劃分序列,是快速排序算法的關(guān)鍵。
                  為簡單起見,我這里數(shù)組的第一個元素作為樞點(diǎn)元素,重新排列數(shù)組,使得樞點(diǎn)元素之前的元素都小于樞點(diǎn)元素,而樞點(diǎn)元素之后的元素都大于或等于樞點(diǎn)元素。
                  在這里我提供算法的兩種實(shí)現(xiàn):
            第一種:
            template <class T>
            int Parttion(T a[], int low, int high)
            {
                  T x = a[low];

                  while (low < high)
                  {
                        while (low < high && a[high] >=  x)
                              high--;
                        a[low] = a[high];

                        while (low < high && a[low] <  x)
                              low++;
                        a[high] = a[low];
                  }

                  a[low] = x;
                  return low;
            }
            第二種:
            template <class T>
            int Parttion(T a[], int low, int high)
            {
                  T x = a[low];
                  int i = low;
                 
                  for (int j=low+1; j<=high; j++)
                  {
                        if (a[j] <= x)
                        {
                              i++;
                              if (i != j)
                                    Swap(a[i], a[j]);
                        }
                  }
                 
                  Swap(a[low], a[i]);
                  return i;
            }

            template <class T>
            void Swap(T & a, T & b)
            {
                  T t = a;
                  a = b;
                  b = t;
            }

            快速排序的驅(qū)動程序:
            template <class T>
            void QuickSort(T a[], int len)
            {
                  Qsort(a, 0, len-1);
            }

            template <class T>
            void Qsort(T a[], int low, int high)
            {
                  if (low < high)
                  {
                        int k = Parttion(a, low, high);
                        Qsort(a, low, k-1);
                        Qsort(a, k+1, high);
                  }
            }

            Posted on 2006-06-14 10:19 夢想飛揚(yáng) 閱讀(1187) 評論(0)  編輯 收藏 引用

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


            国内精品久久久久久99蜜桃| 国产精品激情综合久久| 久久人人爽人人爽人人片AV高清| 婷婷久久五月天| 色偷偷久久一区二区三区| 99久久精品费精品国产| 亚洲精品99久久久久中文字幕 | 97视频久久久| 97久久精品国产精品青草| 亚洲精品99久久久久中文字幕 | 免费久久人人爽人人爽av| 国产精品久久久久久久久| 久久这里有精品| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 国产精品成人99久久久久 | 国产无套内射久久久国产| 狠狠综合久久AV一区二区三区| 狠狠色丁香婷婷久久综合不卡| 亚洲人成电影网站久久| 999久久久免费国产精品播放| 一本色道久久综合亚洲精品| 91精品国产综合久久香蕉| 久久精品a亚洲国产v高清不卡| 亚洲美日韩Av中文字幕无码久久久妻妇 | 国产精品久久久久久久久鸭| 精品熟女少妇AV免费久久| 久久综合九色综合欧美就去吻| 狠色狠色狠狠色综合久久| 久久午夜无码鲁丝片| 久久亚洲AV成人无码软件| 日韩亚洲国产综合久久久| 99久久精品国产综合一区| 99久久婷婷免费国产综合精品| 久久人人爽爽爽人久久久| 狠狠色婷婷久久一区二区| 欧美久久久久久| 一本久道久久综合狠狠爱| 99久久精品国产一区二区| 久久久久免费精品国产| 亚洲AV无码久久精品成人 | 久久久久亚洲AV成人网人人网站|