<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    備注學(xué)院

    LuLu

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      5 隨筆 :: 50 文章 :: 16 評論 :: 0 Trackbacks
    CSDN - 文檔中心 - .NET 閱讀:1338   評論: 0    參與評論
    標(biāo)題   【算法】C#快速排序類     選擇自 lovewangshu 的 Blog
    關(guān)鍵字   【算法】C#快速排序類
    出處  

    快速排序的基本思想是基于分治策略的。對于輸入的子序列ap..ar,如果規(guī)模足夠小則直接進(jìn)行排序,否則分三步處理:

    分解(Divide):將輸入的序列ap..ar劃分成兩個非空子序列ap..aq和aq+1..ar,使ap..aq中任一元素的值不大于aq+1..ar中任一元素的值。 
    遞歸求解(Conquer):通過遞歸對p..aq和aq+1..ar進(jìn)行排序。 
    合并(Merge):由于對分解出的兩個子序列的排序是就地進(jìn)行的,所以在ap..aq和aq+1..ar都排好序后不需要執(zhí)行任何計算ap..ar就已排好序。 
    這個解決流程是符合分治法的基本步驟的。因此,快速排序法是分治法的經(jīng)典應(yīng)用實例之一。

    using System;

    namespace VcQuickSort
    {
     /// <summary>
     /// ClassQuickSort 快速排序。
     /// 范維肖
     /// </summary>

     public class QuickSort
     {
      public QuickSort()
      {
      }

      private void Swap(ref int i,ref int j)
      //swap two integer
      {
       int t;
       t=i;
       i=j;
       j=t;
      }
      
      public void Sort(int [] list,int low,int high)
      {
       if(high<=low)
       {
        //only one element in array list
        //so it do not need sort
        return;
       }
       else if (high==low+1)
       {
        //means two elements in array list
        //so we just compare them

        if(list[low]>list[high])
        {
         //exchange them
         Swap(ref list[low],ref list[high]);
         return;
        }
       }
       //more than 3 elements in the arrary list
       //begin QuickSort

       myQuickSort(list,low,high);
      }

      public void myQuickSort(int [] list,int low,int high)
      {
       if(low<high)
       {
        int pivot=Partition(list,low,high);
        myQuickSort(list,low,pivot-1);
        myQuickSort(list,pivot+1,high);
       }
      }

      private int Partition(int [] list,int low,int high)
      {
       //get the pivot of the arrary list
       int pivot;
       pivot=list[low];
       while(low<high)
       {
        while(low<high && list[high]>=pivot)
        {
         high--;
        }
        if(low!=high)
        {
         Swap(ref list[low],ref list[high]);
         low++;
        }
        while(low<high && list[low]<=pivot)
        {
         low++;
        }
        if(low!=high)
        {
         Swap(ref list[low],ref list[high]); 
         high--;
        }
       }
       return low;
      }

     }
    }


    posted on 2008-08-07 09:14 smildlzj 閱讀(189) 評論(0)  編輯  收藏 所屬分類: C#
    主站蜘蛛池模板: 免费福利在线视频| sss在线观看免费高清| 日韩精品内射视频免费观看| 亚洲国产成人精品91久久久| 亚洲国产欧美日韩精品一区二区三区 | 亚洲色欲啪啪久久WWW综合网| jjizz全部免费看片| 亚洲理论在线观看| 国内精自视频品线六区免费| 亚洲一区影音先锋色资源| a级特黄毛片免费观看| 亚洲国产精品嫩草影院在线观看 | 亚洲成aⅴ人片久青草影院按摩| 欧美大尺寸SUV免费| 亚洲精品女同中文字幕| 国产zzjjzzjj视频全免费| 产传媒61国产免费| 亚洲VA中文字幕无码一二三区 | 中文字幕亚洲综合小综合在线 | 4455永久在线观免费看| 国产精品高清视亚洲精品| 在线免费观看一区二区三区| 国产亚洲美女精品久久| ww4545四虎永久免费地址| 亚洲最大中文字幕无码网站| 成年女人永久免费观看片| 日韩少妇内射免费播放| 亚洲AV中文无码字幕色三| 美女视频黄是免费的网址| 亚洲色偷拍另类无码专区| 国产成人亚洲精品电影| 亚洲精品国产精品乱码不卡| 国内少妇偷人精品视频免费| 亚洲一级毛片视频| 亚洲国产精品一区二区三区久久 | 国产免费AV片在线观看播放| 国产一级淫片免费播放| 中文字幕在线免费看| 亚洲人成毛片线播放| 亚洲精品无码日韩国产不卡?V| 无码人妻丰满熟妇区免费 |