亚洲日韩av在线观看_日韩一级欧美一级_亚洲自偷自拍另类11p_久久午夜色播影院_中国黄色三级毛片_伊人久久一区二区三区小说_国产精品va无码二区_国产三区在线视频_69热视频_日本亚洲天堂_99精品少妇_国产区 在线观看_天堂一区二区三区_大片免费在线观看视频_免费看黄色一级片_黄色毛片特级_国产 麻豆 日韩 欧美 久久_国产一级淫片s片sss毛片s级_欧美爱爱视频_精品无码一区二区三区水蜜桃

當(dāng)前位置: 首頁編程開發(fā)Java → 10種排序算法總結(jié)

10種排序算法總結(jié)

更多

排序算法有很多,所以在特定情景中使用哪一種算法很重要。為了選擇合適的算法,可以按照建議的順序考慮以下標(biāo)準(zhǔn): 
(1)執(zhí)行時(shí)間 
(2)存儲(chǔ)空間 
(3)編程工作 
   對(duì)于數(shù)據(jù)量較小的情形,(1)(2)差別不大,主要考慮(3);而對(duì)于數(shù)據(jù)量大的,(1)為首要。 
  
主要排序法有: 
一、冒泡(Bubble)排序——相鄰交換 
二、選擇排序——每次最小/大排在相應(yīng)的位置 
三、插入排序——將下一個(gè)插入已排好的序列中 
四、殼(Shell)排序——縮小增量 
五、歸并排序 
六、快速排序 
七、堆排序 
八、拓?fù)渑判?nbsp;
九、錦標(biāo)賽排序 
十、基數(shù)排序 
  
  
 
一、冒泡(Bubble)排序 
 
----------------------------------Code 從小到大排序n個(gè)數(shù)------------------------------------ 
void BubbleSortArray() 

      for(int i=1;i<n;i++) 
      { 
        for(int j=0;i<n-i;j++) 
         { 
              if(a[j]>a[j+1])//比較交換相鄰元素 
               { 
                   int temp; 
                   temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; 
               } 
         } 
      } 

-------------------------------------------------Code------------------------------------------------ 
效率 O(n²),適用于排序小列表。 
  
  
二、選擇排序 
----------------------------------Code 從小到大排序n個(gè)數(shù)-------------------------------- 
void SelectSortArray() 

    int min_index; 
    for(int i=0;i<n-1;i++) 
    { 
         min_index=i; 
         for(int j=i+1;j<n;j++)//每次掃描選擇最小項(xiàng) 
            if(arr[j]<arr[min_index])  min_index=j; 
         if(min_index!=i)//找到最小項(xiàng)交換,即將這一項(xiàng)移到列表中的正確位置 
         { 
             int temp; 
             temp=arr[i]; arr[i]=arr[min_index]; arr[min_index]=temp; 



-------------------------------------------------Code----------------------------------------- 
效率O(n²),適用于排序小的列表。 
  
  
三、插入排序 
--------------------------------------------Code 從小到大排序n個(gè)數(shù)------------------------------------- 
void InsertSortArray() 

for(int i=1;i<n;i++)//循環(huán)從第二個(gè)數(shù)組元素開始,因?yàn)閍rr[0]作為最初已排序部分 

    int temp=arr[i];//temp標(biāo)記為未排序第一個(gè)元素 
    int j=i-1; 
while (j>=0 && arr[j]>temp)/*將temp與已排序元素從小到大比較,尋找temp應(yīng)插入的位置*/ 

    arr[j+1]=arr[j]; 
    j--; 

arr[j+1]=temp; 


------------------------------Code-------------------------------------------------------------- 
最佳效率O(n);最糟效率O(n²)與冒泡、選擇相同,適用于排序小列表 
若列表基本有序,則插入排序比冒泡、選擇更有效率。 
  
  
四、殼(Shell)排序——縮小增量排序 
-------------------------------------Code 從小到大排序n個(gè)數(shù)------------------------------------- 
void ShellSortArray() 

  for(int incr=3;incr<0;incr--)//增量遞減,以增量3,2,1為例 

       for(int L=0;L<(n-1)/incr;L++)//重復(fù)分成的每個(gè)子列表 

   for(int i=L+incr;i<n;i+=incr)//對(duì)每個(gè)子列表應(yīng)用插入排序 
   { 
      int temp=arr[i]; 
      int j=i-incr; 
      while(j>=0&&arr[j]>temp) 
      { 
          arr[j+incr]=arr[j]; 
          j-=incr; 

arr[j+incr]=temp; 




--------------------------------------Code------------------------------------------- 
適用于排序小列表。 
效率估計(jì)O(nlog2^n)~O(n^1.5),取決于增量值的最初大小。建議使用質(zhì)數(shù)作為增量值,因?yàn)槿绻隽恐凳?的冪,則在下一個(gè)通道中會(huì)再次比較相同的元素。 
殼(Shell)排序改進(jìn)了插入排序,減少了比較的次數(shù)。是不穩(wěn)定的排序,因?yàn)榕判蜻^程中元素可能會(huì)前后跳躍。 
  
  
五、歸并排序 
----------------------------------------------Code 從小到大排序--------------------------------------- 
void MergeSort(int low,int high) 

   if(low>=high)   return;//每個(gè)子列表中剩下一個(gè)元素時(shí)停止 
   else int mid=(low+high)/2;/*將列表劃分成相等的兩個(gè)子列表,若有奇數(shù)個(gè)元素,則在左邊子列表大于右側(cè)子列表*/ 
   MergeSort(low,mid);//子列表進(jìn)一步劃分 
   MergeSort(mid+1,high); 
   int [] B=new int [high-low+1];//新建一個(gè)數(shù)組,用于存放歸并的元素 
   for(int i=low,j=mid+1,k=low;i<=mid && j<=high;k++)/*兩個(gè)子列表進(jìn)行排序歸并,直到兩個(gè)子列表中的一個(gè)結(jié)束*/ 
   { 
       if (arr[i]<=arr[j];) 

    B[k]=arr[i]; 
    I++; 

else
    { B[k]=arr[j]; j++; } 

for(   ;j<=high;j++,k++)//如果第二個(gè)子列表中仍然有元素,則追加到新列表 
      B[k]=arr[j]; 
   for(   ;i<=mid;i++,k++)//如果在第一個(gè)子列表中仍然有元素,則追加到新列表中 
      B[k]=arr[i]; 
   for(int z=0;z<high-low+1;z++)//將排序的數(shù)組B的 所有元素復(fù)制到原始數(shù)組arr中 
      arr[z]=B[z]; 

-----------------------------------------------------Code--------------------------------------------------- 
效率O(nlogn),歸并的最佳、平均和最糟用例效率之間沒有差異。 
適用于排序大列表,基于分治法。 
  
六、快速排序 
------------------------------------Code-------------------------------------------- 
/*快速排序的算法思想:選定一個(gè)樞紐元素,對(duì)待排序序列進(jìn)行分割,分割之后的序列一個(gè)部分小于樞紐元素,一個(gè)部分大于樞紐元素,再對(duì)這兩個(gè)分割好的子序列進(jìn)行上述的過程。*/                  void swap(int a,int b){int t;t =a ;a =b ;b =t ;} 
        int Partition(int [] arr,int low,int high) 
        { 
            int pivot=arr[low];//采用子序列的第一個(gè)元素作為樞紐元素 
            while (low < high) 
            { 
                //從后往前栽后半部分中尋找第一個(gè)小于樞紐元素的元素 
                while (low < high && arr[high] >= pivot) 
                { 
                    --high; 
                } 
                //將這個(gè)比樞紐元素小的元素交換到前半部分 
                swap(arr[low], arr[high]); 
                //從前往后在前半部分中尋找第一個(gè)大于樞紐元素的元素 
                while (low <high &&arr [low ]<=pivot ) 
                { 
                    ++low ; 
                } 
                swap (arr [low ],arr [high ]);//將這個(gè)樞紐元素大的元素交換到后半部分 
            } 
            return low ;//返回樞紐元素所在的位置 
        } 
        void QuickSort(int [] a,int low,int high) 
        { 
            if (low <high ) 
            { 
                int n=Partition (a ,low ,high ); 
                QuickSort (a ,low ,n ); 
                QuickSort (a ,n +1,high ); 
            } 
        } 
----------------------------------------Code------------------------------------- 
平均效率O(nlogn),適用于排序大列表。 
此算法的總時(shí)間取決于樞紐值的位置;選擇第一個(gè)元素作為樞紐,可能導(dǎo)致O(n²)的最糟用例效率。若數(shù)基本有序,效率反而最差。選項(xiàng)中間值作為樞紐,效率是O(nlogn)。 
基于分治法。 
  
  
 
七、堆排序 
最大堆:后者任一非終端節(jié)點(diǎn)的關(guān)鍵字均大于或等于它的左、右孩子的關(guān)鍵字,此時(shí)位于堆頂?shù)墓?jié)點(diǎn)的關(guān)鍵字是整個(gè)序列中最大的。 
思想: 
(1)令i=l,并令temp= kl ; 
(2)計(jì)算i的左孩子j=2i+1; 
(3)若j<=n-1,則轉(zhuǎn)(4),否則轉(zhuǎn)(6); 
(4)比較kj和kj+1,若kj+1>kj,則令j=j(luò)+1,否則j不變; 
(5)比較temp和kj,若kj>temp,則令ki等于kj,并令i=j,j=2i+1,并轉(zhuǎn)(3),否則轉(zhuǎn)(6) 
(6)令ki等于temp,結(jié)束。 
-----------------------------------------Code--------------------------- 
void HeapSort(SeqIAst R) 
 
    { //對(duì)R[1..n]進(jìn)行堆排序,不妨用R[0]做暫存單元    int I;    BuildHeap(R); //將R[1-n]建成初始堆for(i=n;i>1;i--) //對(duì)當(dāng)前無序區(qū)R[1..i]進(jìn)行堆排序,共做n-1趟。{      R[0]=R[1]; R[1]=R[i]; R[i]=R[0]; //將堆頂和堆中最后一個(gè)記錄交換      Heapify(R,1,i-1);  //將R[1..i-1]重新調(diào)整為堆,僅有R[1]可能違反堆性質(zhì)     }    } ---------------------------------------Code-------------------------------------- 
 
  
堆排序的時(shí)間,主要由建立初始堆和反復(fù)重建堆這兩部分的時(shí)間開銷構(gòu)成,它們均是通過調(diào)用Heapify實(shí)現(xiàn)的。 
 
      堆排序的最壞時(shí)間復(fù)雜度為O(nlgn)。堆排序的平均性能較接近于最壞性能。     由于建初始堆所需的比較次數(shù)較多,所以堆排序不適宜于記錄數(shù)較少的文件。     堆排序是就地排序,輔助空間為O(1),     它是不穩(wěn)定的排序方法。 
 
  
堆排序與直接插入排序的區(qū)別: 
     直接選擇排序中,為了從R[1..n]中選出關(guān)鍵字最小的記錄,必須進(jìn)行n-1次比較,然后在R[2..n]中選出關(guān)鍵字最小的記錄,又需要做n-2次比較。事實(shí)上,后面的n-2次比較中,有許多比較可能在前面的n-1次比較中已經(jīng)做過,但由于前一趟排序時(shí)未保留這些比較結(jié)果,所以后一趟排序時(shí)又重復(fù)執(zhí)行了這些比較操作。 
     堆排序可通過樹形結(jié)構(gòu)保存部分比較結(jié)果,可減少比較次數(shù)。 
  
 
八、拓?fù)渑判?nbsp;
例 :學(xué)生選修課排課先后順序 
拓?fù)渑判颍喊延邢驁D中各頂點(diǎn)按照它們相互之間的優(yōu)先關(guān)系排列成一個(gè)線性序列的過程。 
方法: 
在有向圖中選一個(gè)沒有前驅(qū)的頂點(diǎn)且輸出 
從圖中刪除該頂點(diǎn)和所有以它為尾的弧 
重復(fù)上述兩步,直至全部頂點(diǎn)均已輸出(拓?fù)渑判虺晒Γ蛘弋?dāng)圖中不存在無前驅(qū)的頂點(diǎn)(圖中有回路)為止。 
---------------------------------------Code-------------------------------------- 
void TopologicalSort()/*輸出拓?fù)渑判蚝瘮?shù)。若G無回路,則輸出G的頂點(diǎn)的一個(gè)拓?fù)湫蛄胁⒎祷豋K,否則返回ERROR*/ 

      int indegree[M]; 
      int i,k,j; 
      char n; 
      int count=0; 
      Stack thestack; 
      FindInDegree(G,indegree);//對(duì)各頂點(diǎn)求入度indegree[0....num] 
      InitStack(thestack);//初始化棧 
      for(i=0;i<G.num;i++) 
          Console.WriteLine("結(jié)點(diǎn)"+G.vertices[i].data+"的入度為"+indegree[i]); 
      for(i=0;i<G.num;i++) 
      { 
           if(indegree[i]==0) 
              Push(thestack.vertices[i]); 
      } 
      Console.Write("拓?fù)渑判蜉敵鲰樞驗(yàn)椋?quot;); 
      while(thestack.Peek()!=null) 
      { 
               Pop(thestack.Peek()); 
               j=locatevex(G,n); 
               if (j==-2) 
                  { 
                         Console.WriteLine("發(fā)生錯(cuò)誤,程序結(jié)束。"); 
                         exit(); 
                  } 
                Console.Write(G.vertices[j].data); 
                count++; 
                for(p=G.vertices[j].firstarc;p!=NULL;p=p.nextarc) 
                { 
                     k=p.adjvex; 
                     if (!(--indegree[k])) 
                         Push(G.vertices[k]); 
                } 
      } 
      if (count<G.num) 
          Cosole.WriteLine("該圖有環(huán),出現(xiàn)錯(cuò)誤,無法排序。"); 
      else
          Console.WriteLine("排序成功。"); 

----------------------------------------Code-------------------------------------- 
算法的時(shí)間復(fù)雜度O(n+e)。 
  
  
 
九、錦標(biāo)賽排序 
錦標(biāo)賽排序的算法思想與體育比賽類似。 
    首先將n個(gè)數(shù)據(jù)元素兩兩分組,分別按關(guān)鍵字進(jìn)行比較,得到n/2個(gè)比較的優(yōu)勝者(關(guān)鍵字小者),作為第一步比較的結(jié)果保留下來, 
    然后對(duì)這n/2個(gè)數(shù)據(jù)元素再兩兩分組,分別按關(guān)鍵字進(jìn)行比較,…,如此重復(fù),直到選出一個(gè)關(guān)鍵字最小的數(shù)據(jù)元素為止。 
 
 
  
--------------------------------Code in C--------------------------------------- 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <math.h> 
#define SIZE 100000 
#define MAX 1000000 
struct node 

 long num;//關(guān)鍵字 
 char str[10]; 
 int lastwin;//最后勝的對(duì)手 
 int killer;//被擊敗的對(duì)手 
 long times;//比賽次數(shù) 
}data[SIZE]; 
long CompareNum=0; 
long ExchangeNum=0; 
long Read(char name[])//讀取文件a.txt中的數(shù)據(jù),并存放在數(shù)組data[]中;最后返回?cái)?shù)據(jù)的個(gè)數(shù) 

 FILE *fp; 
 long i=1; 
 fp=fopen(name,"rw"); 
 fscanf(fp,"%d%s",&data[i].num,data[i].str); 
 while(!feof(fp)) 
 { 
  i++; 
  fscanf(fp,"%d%s",&data[i].num,data[i].str);  
 } 
 return (i-1); 

long Create(long num)//創(chuàng)建勝者樹,返回冠軍(最小數(shù))在數(shù)組data[]中的下標(biāo) 

 int i,j1,j2,max,time=1; 
 long min;//記錄當(dāng)前冠軍的下標(biāo) 
 for(i=1;pow(2,i-1)<num;i++) 
  ; 
 max=pow(2,i-1);//求葉子結(jié)點(diǎn)數(shù)目 
 for(i=1;i<=max;i++)//初始化葉子結(jié)點(diǎn) 
 { 
  data[i].killer=0; 
  data[i].lastwin=0; 
  data[i].times=0; 
  if(i>num) 
   data[i].num=MAX; 
 } 
 for(i=1;i<=max;i+=2)//第一輪比賽 
 { 
  ++CompareNum; 
  if(data[i].num <= data[i+1].num) 
  { 
   data[i].lastwin = i+1; 
   data[i+1].killer=i; 
   ++data[i].times; 
   ++data[i+1].times; 
   min=i; 
  } 
  else
  { 
   data[i+1].lastwin=i; 
   data[i].killer=i+1; 
   ++data[i].times; 
   ++data[i+1].times; 
   min=i+1; 
  } 
 } 
 j1=j2=0;//記錄連續(xù)的兩個(gè)未被淘汰的選手的下標(biāo) 
 while(time <= (log(max)/log(2)))//進(jìn)行淘汰賽 
 { 
  for(i=1;i<=max;i++) 
  { 
   if(data[i].times==time && data[i].killer==0)//找到一名選手 
   { 
    j2=i;//默認(rèn)其為兩選手中的后來的 
    if(j1==0)//如果第一位置是空的,則剛來的選手先來的 
     j1=j2; 
    else//否則剛來的選手是后來的,那么選手都已到場(chǎng)比賽開始 
    { 
     ++CompareNum; 
     if(data[j1].num <= data[j2].num)//先來的選手獲勝 
     { 
      data[j1].lastwin = j2;//最后贏的是j2 
      data[j2].killer=j1;//j2是被j1淘汰的 
      ++data[j1].times; 
      ++data[j2].times;//兩選手場(chǎng)次均加1  
      min=j1;//最小數(shù)下標(biāo)為j1 
      j1=j2=0;//將j1,j2置0 
     } 
     else//同理 
     { 
      data[j2].lastwin=j1; 
      data[j1].killer=j2; 
      ++data[j1].times; 
      ++data[j2].times;      
      min=j2; 
      j1=j2=0; 
     } 
    } 
   } 
   
  } 
  time++;//輪數(shù)加1 
 } 
 return min;//返回冠軍的下標(biāo) 

void TournamentSort(long num)//錦標(biāo)賽排序 

 long tag=Create(num);//返回最小數(shù)下標(biāo) 
 FILE *fp1; 
 fp1=fopen("sort.txt","w+");//為寫入創(chuàng)建并打開文件sort.txt 
 while(data[tag].num != MAX)//當(dāng)最小值不是無窮大時(shí) 
 { 
  printf("%d %s\n",data[tag].num,data[tag].str);//輸出數(shù)據(jù) 
  fprintf(fp1,"%d %s\n",data[tag].num,data[tag].str);//寫入數(shù)據(jù) 
  data[tag].num=MAX;//將當(dāng)前冠軍用無窮大替換 
  tag=Create(num);//返回下一個(gè)冠軍的下標(biāo)  
 } 

int main() 

 int num; 
 char name[10]; 
 printf("Input name of the file:"); 
 gets(name); 
 num=Read(name);//讀文件 
 TournamentSort(num);//錦標(biāo)賽排序 
 printf("CompareNum=%d\nExchangeNum=%d\n",CompareNum,ExchangeNum); 
 return 0; 

------------------------------------------Code------------------------------------- 
  
  
十、基數(shù)排序 
基數(shù)排序又被稱為桶排序。與前面介紹的幾種排序方法相比較,基數(shù)排序和它們有明顯的不同。 
    前面所介紹的排序方法都是建立在對(duì)數(shù)據(jù)元素關(guān)鍵字進(jìn)行比較的基礎(chǔ)上,所以可以稱為基于比較的排序; 
    而基數(shù)排序首先將待排序數(shù)據(jù)元素依次“分配”到不同的桶里,然后再把各桶中的數(shù)據(jù)元素“收集”到一起。 
通過使用對(duì)多關(guān)鍵字進(jìn)行排序的這種“分配”和“收集”的方法,基數(shù)排序?qū)崿F(xiàn)了對(duì)多關(guān)鍵字進(jìn)行排序。 
——————————————————————————————————————— 
例: 
    每張撲克牌有兩個(gè)“關(guān)鍵字”:花色和面值。其大小順序?yàn)椋?nbsp;
    花色:§<¨<©<ª 
    面值:2<3<……<K<A 
    撲克牌的大小先根據(jù)花色比較,花色大的牌比花色小的牌大;花色一樣的牌再根據(jù)面值比較大小。所以,將撲克牌按從小到大的次序排列,可得到以下序列: 
 §2,…,§A,¨2,…,¨A,©2,…,©A,ª2,…,ªA 
    這種排序相當(dāng)于有兩個(gè)關(guān)鍵字的排序,一般有兩種方法實(shí)現(xiàn)。 
    其一:可以先按花色分成四堆(每一堆牌具有相同的花色),然后在每一堆牌里再按面值從小到大的次序排序,最后把已排好序的四堆牌按花色從小到大次序疊放在一起就得到排序的結(jié)果。 
其二:可以先按面值排序分成十三堆(每一堆牌具有相同的面值),然后將這十三堆牌按面值從小到大的順序疊放在一起,再把整副牌按順序根據(jù)花色再分成四堆(每一堆牌已按面值從小到大的順序有序),最后將這四堆牌按花色從小到大合在一起就得到排序的結(jié)果。 
——————————————————————————————————————— 
實(shí)現(xiàn)方法: 
  最高位優(yōu)先(Most Significant Digit first)法,簡稱MSD法:先按k1排序分組,同一組中記錄,關(guān)鍵碼k1相等,再對(duì)各組按k2排序分成子組,之后,對(duì)后面的關(guān)鍵碼繼續(xù)這樣的排序分組,直到按最次位關(guān)鍵碼kd對(duì)各子組排序后。再將各組連接起來,便得到一個(gè)有序序列。 
  最低位優(yōu)先(Least Significant Digit first)法,簡稱LSD法:先從kd開始排序,再對(duì)kd-1進(jìn)行排序,依次重復(fù),直到對(duì)k1排序后便得到一個(gè)有序序列。 
---------------------------------Code in C#------------------------------------------ 
  using System; 
  using System.Collections.Generic; 
  using System.Linq; 
  using System.Text; 
  namespace LearnSort 
  { 
  class Program 
  { 
  static void Main(string[] args) 
  { 
  int[] arr = CreateRandomArray(10);//產(chǎn)生隨機(jī)數(shù)組 
  Print(arr);//輸出數(shù)組 
  RadixSort(ref arr);//排序 
  Print(arr);//輸出排序后的結(jié)果 
  Console.ReadKey(); 
  } 
  public static void RadixSort(ref int[] arr) 
  { 
  int iMaxLength = GetMaxLength(arr); 
  RadixSort(ref arr, iMaxLength); 
  } 
  private static void RadixSort(ref int[] arr, int iMaxLength) 
  { 
  List<int> list = new List<int>();//存放每次排序后的元素 
  List<int>[] listArr = new List<int>[10];//十個(gè)桶 
  char currnetChar;//存放當(dāng)前的字符比如說某個(gè)元素123 中的2 
  string currentItem;//存放當(dāng)前的元素比如說某個(gè)元素123 
  for (int i = 0; i < listArr.Length; i++)//給十個(gè)桶分配內(nèi)存初始化。 
  listArr[i] = new List<int>(); 
  for (int i = 0; i < iMaxLength; i++)//一共執(zhí)行iMaxLength次,iMaxLength是元素的最大位數(shù)。 
  { 
  foreach (int number in arr)//分桶 
  { 
  currentItem = number.ToString();//將當(dāng)前元素轉(zhuǎn)化成字符串 
  try { currnetChar = currentItem[currentItem.Length-i-1]; }//從個(gè)位向高位開始分桶 
  catch { listArr[0].Add(number); continue; }//如果發(fā)生異常,則將該數(shù)壓入listArr[0]。比如說5 是沒有十位數(shù)的,執(zhí)行上面的操作肯定會(huì)發(fā)生越界異常的,這正是期望的行為,我們認(rèn)為5的十位數(shù)是0,所以將它壓入listArr[0]的桶里。 
  switch (currnetChar)//通過currnetChar的值,確定它壓人哪個(gè)桶中。 
  { 
  case '0': listArr[0].Add(number); break; 
  case '1': listArr[1].Add(number); break; 
  case '2': listArr[2].Add(number); break; 
  case '3': listArr[3].Add(number); break; 
  case '4': listArr[4].Add(number); break; 
  case '5': listArr[5].Add(number); break; 
  case '6': listArr[6].Add(number); break; 
  case '7': listArr[7].Add(number); break; 
  case '8': listArr[8].Add(number); break; 
  case '9': listArr[9].Add(number); break; 
  default: throw new Exception("unknow error"); 
  } 
  } 
  for (int j = 0; j < listArr.Length; j++)//將十個(gè)桶里的數(shù)據(jù)重新排列,壓入list 
  foreach (int number in listArr[j].ToArray<int>()) 
  { 
  list.Add(number); 
  listArr[j].Clear();//清空每個(gè)桶 
  } 
  arr = list.ToArray<int>();//arr指向重新排列的元素 
  //Console.Write("{0} times:",i); 
  Print(arr);//輸出一次排列的結(jié)果 
  list.Clear();//清空list 
  } 
  } 
  //得到最大元素的位數(shù) 
  private static int GetMaxLength(int[] arr) 
  { 
  int iMaxNumber = Int32.MinValue; 
  foreach (int i in arr)//遍歷得到最大值 
  { 
  if (i > iMaxNumber) 
  iMaxNumber = i; 
  } 
  return iMaxNumber.ToString().Length;//這樣獲得最大元素的位數(shù)是不是有點(diǎn)投機(jī)取巧了... 
  } 
  //輸出數(shù)組元素 
  public static void Print(int[] arr) 
  { 
  foreach (int i in arr) 
  System.Console.Write(i.ToString()+'\t'); 
  System.Console.WriteLine(); 
  } 
  //產(chǎn)生隨機(jī)數(shù)組。隨機(jī)數(shù)的范圍是0到1000。參數(shù)iLength指產(chǎn)生多少個(gè)隨機(jī)數(shù) 
  public static int[] CreateRandomArray(int iLength) 
  { 
  int[] arr = new int[iLength]; 
  Random random = new Random(); 
  for (int i = 0; i < iLength; i++) 
  arr[i] = random.Next(0,1001); 
  return arr; 
  } 
  } 
  } 
---------------------------------Code --------------------------------------------- 
基數(shù)排序法是屬于穩(wěn)定性的排序,其時(shí)間復(fù)雜度為O (nlog(r)m),其中r為所采取的基數(shù),而m為堆數(shù),在某些時(shí)候,基數(shù)排序法的效率高于其它的比較性排序法。

熱門評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)
主站蜘蛛池模板: 亚马逊贸易有限公司| 凌达光电(昆山)有限公司| 浙江隆泵业有限公司| 漯河 有 有限公司| 无锡康迪克电梯有限公司| 海信科龙广东空调有限公司| 天津七一二通信广播有限公司| 兖州 车 有限公司| 盛丰小额贷款有限公司| 深圳华凌电子有限公司| 劳雷北京仪器有限公司| 上海禹易国际贸易有限公司| 清算事务所有限公司| 地中海航运有限公司上海 | 广东不锈钢钢业有限公司| 珠海中慧电子有限公司| 双合成食品有限公司| 贵阳贸易有限公司招聘信息| 深圳市捷威电子有限公司| 江西联益电子有限公司| 深圳捷达贸易有限公司| 深圳华峰实业有限公司| 苏州安防技术有限公司| 康居节能技术有限公司| 深圳市丹雅有限公司| 掌信信息技术有限公司| 铭佳五金制品有限公司| 狮丹努进出口有限公司| 博世热力北京有限公司| 施耐德万高电气设备有限公司| 上海果铺贸易有限公司| 中山特灵空调有限公司| 美迪科上海有限公司| 居汇装饰工程有限公司| 力通威电子有限公司| 江阴滨江医疗设备有限公司| 青岛天铸机械有限公司| 茂瑞电子 东莞 有限公司| 广州市的食品有限公司| 格尔汽车附件有限公司| 铭远装饰工程有限公司| 祥丰电子(中山)有限公司| 嘉兴嘉格电器有限公司| 郑州从文教育有限公司| 杭州市路桥有限公司| 上海恩凯轴承有限公司| 特不同音响有限公司| 和龙 食品有限公司| 深圳市科思电子有限公司| 云南 节能有限公司| 北方交通设施有限公司| 世通利方公关策划有限公司| 吉中汽车内饰件有限公司| 北京比特大陆有限公司| 武汉丰创机械有限公司| 艾恩格电气有限公司| 通宇新材料有限公司| 深圳创成电子有限公司| 福建福源食品有限公司| 汕头药业有限公司招聘| 常州共创动力有限公司| 艾雪化妆品有限公司| 山西纺织印染有限公司| 佛山市销售有限公司招聘| 深圳康源电子有限公司| 高安天然气有限公司| 东莞美得机械有限公司| 南京福特汽车有限公司| 中康建筑工程有限公司| 苏州安防技术有限公司| 新聪厨食品有限公司| 晋中 能源有限公司| 重工有限公司 英文| 佛山市奇美有限公司| 北京乐美教育有限公司| 沈阳有色冶金机械有限公司| 九州实业发展有限公司| 动视信息技术有限公司| 特瑞堡密封系统有限公司| 德信行香料有限公司| 深圳瑞元技术有限公司| 惠州市 木制品有限公司| 北京明航发展有限公司| 竹昌精密冲压件有限公司| 上海秉国际贸易有限公司| 莱德桑机械有限公司| 北京同创蓝天有限公司| 迷尔赛化妆品有限公司| 朋友化妆品有限公司| 雅绅特电器有限公司| 江豪发电机组有限公司| 福建福马食品有限公司| 有限公司 股东 风险| 浙江摩多克斯汽配有限公司| 斯曼尔电器有限公司| 日立电梯电机有限公司| 宏兴机械制造有限公司| 上海全景数字技术有限公司| 大恒建筑设计有限公司| 苏州嘉基电子有限公司| 深圳铨宏电子有限公司| 河南正大机械有限公司| 三吉机械制造有限公司| 金佳汽车销售有限公司| 鑫阳制冷设备有限公司| 雪人制冷设备有限公司| 天瑞机械设备有限公司| 奥比塑胶(上海)有限公司| 普路通供应链有限公司| 山东电子衡器有限公司| 温州凡鞋业有限公司| 上海磁奇电子有限公司| 瑞鸿机电设备有限公司| 厦门贸旭工贸有限公司| 浦项奥斯特姆汽车配件有限公司| 天海美擎信息有限公司| 上海复深蓝信息技术有限公司| 皑乐上海贸易有限公司| 湛江汽车租赁有限公司| 元居装饰工程有限公司| 贝儿孕婴用品有限公司| 合力车辆盘锦有限公司| 山东涂装设备有限公司| 上海朗赛贸易有限公司| 花旗数据处理有限公司| 广力机电设备有限公司| 佛山凯恒电机有限公司| 九江天赐材料有限公司| 广通汽车制造有限公司| 海睿兴实业有限公司| 苏州有色金属材料有限公司 | 扬州中扬食品有限公司| 清华苑建筑设计有限公司| 宁德进出口有限公司| 金现代信息技术有限公司| 普天天纪楼宇智能有限公司| 津奥电梯工程有限公司| 群乔电气成套有限公司| 昌吉地质仪器有限公司| 哈里通实业有限公司| 金诚复合材料有限公司| 柒一拾壹商业有限公司| 青岛安防工程有限公司| 深圳光峰光电技术有限公司| 青岛 久 食品 有限公司| 爱普装饰材料有限公司| 北京申通快递有限公司| 山东气体设备有限公司| 广东黄河实业有限公司| 天安变压器有限公司| 国投曲靖煤炭有限公司| 谦杭重锻造有限公司| 泰邦机械制造有限公司| 北京鑫鑫建筑装饰有限公司| 惠州达鑫电子有限公司| 敏华实业 吴江 有限公司| 杭州杭水市政工程有限公司| 厦门机械工程有限公司| 贵州-老窖酒业有限公司| 东岳有机硅材料有限公司| 常石船舶设计有限公司| 广州油墨化工有限公司| 光普电子(苏州)有限公司| 石家庄矿产品有限公司| 广州世纪信息有限公司| 飞利浦医疗器械有限公司| 济南福的机械有限公司| 陕西新型材料有限公司| 本松工程塑料有限公司| 水晶球信息技术有限公司| 北京鲁能置业有限公司| 三顺中科材料有限公司| 苏州安防技术有限公司| 杭州万景新材料有限公司| 湖南 家俱有限公司| 南京精密技术有限公司| 厦门了帝食品有限公司| 广州屹丰模具制造有限公司| 凯盈进出口有限公司| 锐恒机械设备有限公司| 宁海佳电器有限公司| 邦健医药连锁有限公司| 成源汽车部件有限公司| 德欧机械设备有限公司| 米思米精密机械贸易有限公司| 蓝星清洗(北京)有限公司| 深圳昊达电子有限公司| 云南营养品有限公司| 鑫沣贵金属有限公司| 浙江鑫鑫食品有限公司| 华兴羽绒制品有限公司| 东莞邦阳电机有限公司| 郑州 长城科工贸有限公司| 伟士体育用品有限公司| 江苏苏源酒业有限公司| 宜兴市安装有限公司| 泰州中海油有限公司招聘| 南京有害生物防治有限公司| 创丰机电设备有限公司| 深圳市捷威电子有限公司| 包头市新能源有限公司| 允发化工(上海)有限公司| 宿迁化工有限公司招聘| 杭州西门子高压开关有限公司 | 阳谷恒泰实业有限公司| 鑫雪制冷设备有限公司| 东莞市建筑设计有限公司| 苏州维林光电有限公司| 宁波蓄电池有限公司| 法雷奥发动机冷却佛山有限公司| 美铝(昆山)铝业有限公司| 四川玻璃纤维有限公司| 同济人建筑设计有限公司| 丽水 工贸有限公司| 上海远东阀门有限公司| 河北新纺织有限公司| 嘉信浩远信息技术有限公司| 天津融金汇银贵金属经营有限公司| 湘潭机械设备有限公司| 广西净化工程有限公司| 深圳华强动漫有限公司| 贵州亚广餐饮有限公司| 华北机械制造有限公司| 平安普惠上海有限公司| 普安消防工程有限公司| 车速递汽车租赁有限公司| 东辰塑胶(南通)有限公司| 深圳金能源电器有限公司| 吉林省运输有限公司| 厦门索新能源有限公司| 安徽徽成电气有限公司| 凯特克贸易有限公司| 亿嘉亿装饰工程有限公司| 线路器材制造有限公司| 亮彩精密技术有限公司| 荣泰金属制品有限公司| 上海展唐通讯有限公司| 安隆达化工有限公司| 泰源包装制品有限公司| 苏州罗技电子有限公司| 乌鲁木齐锅炉有限公司| 深圳市奇科电子有限公司| 石家庄庄展贸易有限公司| 京能电力建设有限公司| 山东鲁地矿业有限公司| 湖南消防器材有限公司| 广州凯杰照明有限公司| 有限公司 英文怎么写| 莱州市鑫莱石材有限公司| 川西蓄电池有限公司| 济和堂药业有限公司| 宏鑫五金制品有限公司| 株洲天桥起重机有限公司| 长白山制药有限公司| 恩可埃认证有限公司| 蓝孔雀化纤有限公司| 泉州双环贸易有限公司| 深圳荣华电子有限公司| 润宇环保设备有限公司| 滁州市贸易有限公司| 福建福源食品有限公司| 金华绿源电动车有限公司| 大东南包装有限公司| 中同建筑公司有限公司| 东泰精密模具 苏州 有限公司 | 深圳捷高电子有限公司| 郑州华南设计有限公司| 通华电气设备有限公司| 北京诚栋房屋有限公司| 依蝶雅化妆品有限公司| 北京青云设备有限公司| 科富源电子有限公司| 浙江电力设备制造有限公司| 优胜辉煌教育有限公司| 洁力环保设备有限公司| 山西亨瑞制药有限公司| 浙能天然气运行有限公司| 河南志元食品有限公司| 辉柏嘉文具有限公司| 漯河嘉吉食品有限公司| 恒泰汽车零部件有限公司| 启明星电力有限公司| 顺佳五金制品有限公司| 市勤创电子有限公司| 北京神奇时代有限公司| 天津食友食品有限公司| 成龙威专用汽车有限公司| 自动化有限公司 气动| 腾达不锈钢制品有限公司| 上海华维电脑有限公司| 凯源电力工程有限公司| 广州贝尔电子有限公司| 上海日科贸易有限公司| 青岛正华信息技术有限公司| 利世营销策划有限公司| 江苏电科电气有限公司| 明安运动器材有限公司| 郑州制冷技术有限公司| 济南电力安装有限公司| 钻信石珠宝有限公司| 天水医疗器械有限公司| 博科电子技术有限公司| 江苏泰州消防有限公司| 太安堂药业有限公司| 万旭电子元件有限公司| 深圳大成电子有限公司| 宝宸光学(厦门)有限公司| 广东南奥设备有限公司| 华润电力(涟源)有限公司| 稻花香食品有限公司| 科威半导体有限公司| 四川可口可乐饮料有限公司| 荆州设备制造有限公司| 佛山舒美家具有限公司| 华工激光工程有限公司| 苏州布赫液压有限公司| 湖南长轻置业有限公司| 东方化妆品有限公司| 常州铭赛机器人有限公司| 苏州晶瑞化学有限公司| 雅品装饰工程有限公司| 卓远信息技术有限公司| 三门峡新能源有限公司| 机械有限公司 涂装| 重庆汽车电器有限公司| 银大贵金属有限公司| 上海尚致服饰有限公司| 铁观音茶叶有限公司| 凌致时装天津有限公司| 东莞市美化化工有限公司| 杭州华泰技术有限公司| 王子制纸妮飘有限公司| 上海汉升密封有限公司| 上海华塑包装有限公司| 康翔医疗器械有限公司| 冠美办公家具有限公司| 佛山三水家具有限公司| 勘探与生产有限公司| 豪门印刷 上海 有限公司| 电子净化设备有限公司| 亿铖达焊锡有限公司| 福盛新能源有限公司| 杭华宠物用品有限公司| 佛山市健博有限公司| 发发时代信息技术有限公司| 兆翔临港置业有限公司| 大唐环境技术有限公司| 昆山中昆包装材料有限公司 | 圣典装饰工程有限公司| 吉林省吉荣食品有限公司| 中旅国际货运有限公司| 兴灿五金制品有限公司| 上海统帅装潢有限公司| 瓦房店冶金轴承制造有限公司| 中科机器人有限公司怎么样| 上原汽车零部件有限公司| 中科建设发展有限公司| 东莞金日五金制品有限公司| 昆明酒店用品有限公司| 德州天宇空调有限公司| 配料贸易上海有限公司| 北京鼎实环境工程有限公司| 台州东方机械有限公司| 海南中航鑫建设工程有限公司| 宁波伟业电器有限公司| 深圳市安格电子有限公司| 西安旗电子有限公司| 新天地包装有限公司| 安吉鼎吉家具有限公司| 连云港 医疗用品有限公司| 北京百泰生物技术有限公司| 天音通信发展有限公司| 温雅日用化妆品有限公司| 西安聚翔电子有限公司| 华田装饰工程有限公司| 厦门建材有限公司招聘信息| 深圳市百泰珠宝首饰有限公司| 蜚声演出器材有限公司| 百利盖 昆山 有限公司| 苏州达富电子有限公司| 哈根斯生物塑化有限公司| 邢台儿童玩具有限公司| 泰宇电子(上海)有限公司| 青岛中科新材料有限公司| 天弘电子(上海)有限公司| 福建名城地产有限公司| 红星丝网制造有限公司| 杭州易和设计有限公司| 旭宝轩艺术品有限公司| 品天信息技术有限公司| 佛山电器厂有限公司| 东莞联创电子有限公司| 堡密特建筑材料有限公司| 宁波美侬咖啡机有限公司| 广州标签印刷有限公司| 山东建设安装有限公司| 陕西益丰置业有限公司| 利鑫机械设备有限公司| 恒浩建筑工程有限公司| 银河星文具有限公司| 天津中化仓储有限公司| 郑州电缆有限公司招聘| 昆山显亮汽车配件有限公司| 德邻联合工程有限公司| 甘肃规划设计有限公司| 东莞五金玩具有限公司| 迈康信息技术有限公司| 河北印铁制罐有限公司| 中粮新沙粮油工业有限公司| 矿业有限公司招聘信息网| 森叶(清新)纸业有限公司| 中山市消防工程有限公司| 沈阳八王寺饮料有限公司| 潍坊瑞达机械有限公司| 苏州禾盛新型材料有限公司| 路博润兰炼有限公司| 泉州电力工程有限公司| 大勤国际贸易有限公司| 米斯克电子有限公司| 山西梅园煤业有限公司| 碧涛化妆品有限公司| 河南贝利石化有限公司| 华新机电工程有限公司| 曲阜市建材有限公司| 深圳市车乐电子有限公司| 佳丰装饰工程有限公司| 深圳鸿运电子有限公司| 国信商品交易有限公司| 云南云筑建筑设计有限公司 | 深圳市永联电子有限公司| 银河建筑工程有限公司| 山东厚丰散热器有限公司| 德派装饰工程有限公司| 榆次液压工业有限公司| 深圳铨宏电子有限公司| 一汽四环备品有限公司| 润泉水处理有限公司| 天顺建设工程有限公司| 厦门了帝食品有限公司| 广州第四建筑工程有限公司| 深圳百鑫电子有限公司| 武汉施耐德有限公司| 深圳特利丰有限公司| 中天环保催化剂有限公司| 杭州元通汽车有限公司| 北京基础设施建设有限公司| 深圳海川实业有限公司| 微创信息技术有限公司| 四川信诚劳务有限公司| 河南邦杰食品有限公司| 华业机电设备有限公司| 秦皇岛新能源有限公司| 福马(福建)食品有限公司| 搜斗士信息技术有限公司| 奇宏光电(武汉)有限公司| 海圣医疗器械有限公司| 安徽华泰电缆有限公司| 上海 睿展贸易有限公司| 中石化新奥能源有限公司| 维达纸业(北京)有限公司| 虹光精密工业 苏州 有限公司| 大唐清洁能源有限公司| 安徽徽天园林有限公司| 广州冠昕尔贸易有限公司| 温州丰迪接插件有限公司| 上海麦迪实业有限公司| 广东巴德士有限公司| 常州数控机械设备有限公司| 东元国际贸易有限公司| 甘肃变压器有限公司| 八乐梦床业有限公司| 金阳光食品有限公司| 东莞鑫展电子有限公司| 重庆鸽电线电缆有限公司| 吉林金冠电气有限公司| 青岛优道电子有限公司| 迅达电子(苏州)有限公司| 南京华格塑业有限公司| 上海百联购物中心有限公司| 友威光电 惠州 有限公司| 三申医疗器械有限公司| 北京蓝星化工机械有限公司| 重庆建设雅马哈摩托车有限公司| 上海正弘工程有限公司| 聚美装饰工程有限公司| 无锡精钢不锈钢有限公司| 北京亚南气体有限公司| 广州新华书店有限公司| 天津安费诺电子有限公司| 百事可乐沈阳有限公司| 无锡久保田有限公司| 尼尔森气动元件有限公司| 创辉特电子有限公司| 泰州市市政工程有限公司| 烟台国际技术有限公司| 张家口电气有限公司| 安徽超远信息有限公司| 上海二三四五有限公司| 上鱼舫餐饮有限公司| 山东齐隆化工有限公司| 北京纳博汇有限公司| 宝沃北京汽车有限公司| 广东宝康药业有限公司| 欧宝金属制品有限公司| tcl瑞智制冷设备有限公司| 欧拓 重庆 防音配件有限公司| 格林精密苏州有限公司| 深圳市裕恒电子有限公司| 西门子深圳磁共振有限公司| 嘉丰小额贷款有限公司| 东彩印刷有限公司招聘| 西奥根电气有限公司| 诸暨 汽车配件有限公司| 广东嘉应制药有限公司| 苏州光普电子有限公司| 扬州园林建设有限公司| 宁波华纳圣龙有限公司| 津之源食品有限公司| 青海电子材料有限公司| 广州越秀租赁有限公司| 爱德夏汽车零部件昆山有限公司 | 森淼进出口有限公司| 苏州食品添加剂有限公司| 润天信息技术有限公司| 河南淇淇食品有限公司| 云南万绿生物有限公司| 捷成装饰工程有限公司| 成都西联钢铁有限公司| 广州虹宇物业有限公司| 江西国科军工有限公司| 凯旋装饰工程有限公司| 上海真诺仪表有限公司| 浙玻长兴玻璃有限公司| 石龙富华电子有限公司| 内蒙古电子设备有限公司| 力好工程机械有限公司| 徐州环境工程有限公司| 重庆联庆仪表有限公司| 广东铁将军有限公司| 荣发展有限公司怎么样| 广州绿由工业弃置有限公司| 诚建教育 北京有限公司| 电子净化设备有限公司| 佛山美的有限公司电话| 南通马可迅车轮有限公司| 祥丰电子中山有限公司| 深圳市织造有限公司| 北京北科工程技术有限公司| 康维德医疗用品有限公司| 天弘电子(上海)有限公司| 嘉兴中意电器有限公司| 世联汽车内饰苏州有限公司| 佛山市乐华陶瓷有限公司| 启明星电力有限公司| 贵州水处理有限公司| 洛阳一拖工程机械有限公司| 珠海上富电技有限公司| 红鼎豆捞餐饮有限公司| 派尔尼机电有限公司| 常德乐食品有限公司| 粮全其美食品有限公司| 爱立华卫浴有限公司| 养乐多乳品有限公司| 美药星 南京 制药有限公司| 环球医疗器械有限公司| 邻动 北京 技术有限公司| 佛山阿特维斯制药有限公司| 顺江装饰工程有限公司| 浙江凯 医药有限公司| 恒远新型建材有限公司| 深圳年富实业有限公司| 创业装饰工程有限公司| 深圳亮科光电有限公司| 网联光通技术有限公司| 南京通用电气有限公司| 徐州市纺织有限公司| 恒安泰油管有限公司| 张家港精密模具有限公司| 黄河设计有限公司招聘| 山东四方工程有限公司| 河南通达电缆有限公司| 伟达实业有限公司招聘| 烟台五金机电有限公司| 黑美人茶业有限公司| 郑州办公用品有限公司| 扬子江石化有限公司| 津华金属制品有限公司| 南京幕墙装饰工程有限公司| 晓星电脑技术有限公司| 南通农业机械有限公司| 卓越设备制造有限公司| 水富云天化有限公司| 润扬进出口有限公司| 安晶龙电子有限公司| 深圳市德 盟有限公司| 南京高立机械有限公司| 盈动体育用品有限公司| 佛山港码头有限公司| 深圳电子礼品有限公司| 易尚国际装饰有限公司| 中科半导体照明有限公司| 横店电影院线有限公司| 苏州富莱顺有限公司| 浙江卫星石化有限公司| 青岛城阳塑料有限公司| 济南新型材料有限公司| 亿滋食品(北京)有限公司| 大连服装进出口有限公司| 浙江良和建设有限公司| 惠州市惠太实业有限公司| 宇旭时装 上海 有限公司| 雅图数字视频技术有限公司| 浙江石化舟山有限公司| 青岛益和电气有限公司| 合兴机械设备有限公司| 苏州工业园区建屋发展有限公司 | 富葵精密深圳有限公司| 甘肃仕通汽车销售有限公司 | 东日自动化设备有限公司| 杭州凯膜技术有限公司| 优合环境工程有限公司| 山东建科工程有限公司| 常州邦晟化工有限公司| 浙江进出口食品有限公司| 河南米河净化设备有限公司| 莱恩斯涂料有限公司| 成功机械制造有限公司| 江西汽车板簧有限公司| 彩印机械厂有限公司| 国能新能源汽车有限公司| 芜湖ppg涂料有限公司| 方正装饰工程有限公司| 杭州杭塑管业有限公司| 益维汽车工业有限公司| 山东四方工程有限公司| 山东养殖设备有限公司| 美意阳食品有限公司| 六丰模具昆山有限公司| 深圳旭程电子有限公司| 广州市天高有限公司| 珠海伟创力电子有限公司| 维仕小额贷款有限公司| 贵州 热电有限公司| 东莞塘厦五金有限公司| 欧林 上海 有限公司| 中建一局装饰工程有限公司| 邦宸服饰(深圳)有限公司| 昆山山瑞仪器有限公司| 东辰塑胶(南通)有限公司| 深圳云印技术有限公司| 东莞瑞必达有限公司| 深圳阳光照明有限公司| 宁德进出口有限公司| 山东威海电子有限公司| 固科加固技术有限公司| 江苏大明金属有限公司| 可如思电子有限公司| 盛世兴实业有限公司| 广西桂航实业有限公司| 广州华冠精冲零件有限公司| 莱恩斯涂料有限公司| 东莞万裕三信电子有限公司| 深圳汇业电子有限公司| 楚星恒基纺织品有限公司| 上海浦江气体有限公司|