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

            我所理解的快速排序算法
                  快速排序是在實踐中最快的已知排序算法,它的平均運行時間是O(NlogN)。該算法之所以特別快,主要是由于非常精練和高度優化的內部循環。在隊列中尋找合適的樞點元素,并按樞點元素劃分序列,是快速排序算法的關鍵。
                  為簡單起見,我這里數組的第一個元素作為樞點元素,重新排列數組,使得樞點元素之前的元素都小于樞點元素,而樞點元素之后的元素都大于或等于樞點元素。
                  在這里我提供算法的兩種實現:
            第一種:
            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;
            }

            快速排序的驅動程序:
            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 夢想飛揚 閱讀(1176) 評論(0)  編輯 收藏 引用
            久久精品成人国产午夜| 亚洲AV无码一区东京热久久| …久久精品99久久香蕉国产| 亚洲精品无码久久千人斩| 久久久久久久久久久精品尤物 | 精品久久久久久无码中文字幕一区| 久久精品aⅴ无码中文字字幕不卡| 婷婷综合久久中文字幕蜜桃三电影| 久久99精品久久久久婷婷| 99热热久久这里只有精品68| 亚洲午夜无码久久久久小说| 99久久99久久久精品齐齐| 久久国产成人午夜AV影院| 精品人妻伦九区久久AAA片69| 精品久久无码中文字幕| 久久影院久久香蕉国产线看观看| 久久精品国产清自在天天线| 国产精品免费久久久久影院| 午夜不卡久久精品无码免费| 精品无码人妻久久久久久| 久久精品夜夜夜夜夜久久| 人人狠狠综合88综合久久| 国产精品久久久久久影院 | 99久久人人爽亚洲精品美女| 久久青青色综合| 久久久久久无码国产精品中文字幕 | 久久香蕉一级毛片| 亚洲∧v久久久无码精品| 久久99精品久久久久久秒播| 狠狠色婷婷久久一区二区三区| 久久久久无码中| 欧美日韩精品久久久久| 中文字幕亚洲综合久久| 久久精品中文字幕久久| 精品久久777| 热99re久久国超精品首页| 精品久久久久久亚洲精品| 久久午夜无码鲁丝片| 久久超乳爆乳中文字幕| 久久午夜无码鲁丝片| 99国产欧美久久久精品蜜芽|