黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平
駕駛員 | 網絡編輯
衛生資格 | 執業醫師 | 執業藥師 | 執業護士
會計從業資格考試會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師
質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師
設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師
城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復習資料 > 程序員資料 > 正文

2011年軟考程序員考試復習筆試知識點整理(16)

來源:考試吧Exam8.com) 2011-4-16 19:14:48 考試吧:中國教育培訓第一門戶 模擬考場
考試吧提供了“2011年軟考程序員考試復習筆試知識點整理”,供考生參考。

  更多:2011年軟考程序員考試復習筆試知識點整理匯總

  20、后綴數組

  (1)什么是后綴數組呢?

  直觀來說,后綴數組是記錄一個字符串的后綴的排名的數組,什么是后綴呢,設一個字符串的長度是len(我們約定字符串下標從0開始,所以到len-1結束,比較符合我們日常編程習慣),某一位置i的后綴的就是從i開始到len-1結束的字符串,用suffix(i)表示,即對字符串s來說,suffix(i) =s[i,i+1....len-1],可以發現不同的后綴按字典序排列的名詞是不一樣的(什么是字典序都應該知道吧),記錄這些后綴按字典序排好的結果的數組就叫后綴數組,一般用sa[]表示,網絡上對sa[]的標準定義為:

  后綴數組:后綴數組SA 是一個一維數組,它保存1..n 的某個排列SA[1],SA[2],……,SA[n],并且保證Suffix(SA[i])< Suffix(SA[i+1]),1≤i

  另外還要用到排名數組,即某一位置的后綴在所有后綴中的排名的數組,一般用Rank[]表示,容易發現Rank[sa[i]]=i。

  名次數組:名次數組Rank[i]保存的是Suffix(i)在所有后綴中從小到大排列的“名次”。

  簡單的說,后綴數組是“排第幾的是誰?”,名次數組是“你排第幾?”。

  知道了這些定義,剩下的就是如何構建后綴數組了,可以按照定義來構建,把每個后綴當做一個字符串,用全速排序來排序,不過那樣的時間復雜度為O(n*n),一般用來構建后綴數組用的是倍增算法(Doubling Algorithm),說到倍增算法,就要說到k-前綴的定義,字符串u的k-前綴就是u的從0開始到k-1的字串,u長度不足k時就是整個字符串u,這樣一來我們在比較串s的兩個位置i,j的后綴的2k-前綴時,就是比較兩個后綴的k-前綴和兩個后綴位置+k的k-前綴,顯然當k=1時就是對整個串的單字符進行排序,復雜度O(nlogn),當k>=2時對已排好的k-前綴進行排序,用快排,復雜度O(nlogn),用基數排序,復雜度O(n),容易發現k是2倍增的。所以整個過程的時間復雜度就是O(nlongn)。

  倍增算法構建sa[]的代碼如下:

  #definemax 10000

  intRx[max],Ry[max],rx[max];

  intcmp(int *y,int a,int b,int l)

  {

  return y[a] == y[b] && y[a+l] +y[b+l];

  }

  //對于串約定最后一位是小于串中其他任何元素的元素,這樣cmp的時候就不用擔心y[a+l]

  //越界了,因為y[a]= y[b]就暗含了他們長度相等,都沒有包含最后一位。

  voidget_sa(char *s,int *sa)

  {

  int len = strlen(s),*Rank_x = Rx,*Rank_y =Ry,bar[max],*result_x = rx;

  int i,j,k,p,*t,m=255;

  for (i = 0; i<= m; i++)//對字符排序不會超過255,根據實際情況m值自定

  bar[i] = 0;

  for (i = 0; i< len; i++) bar[Rank_x[i] =s[i]]++;

  for (i = 1; i<= m; i++) bar[i] +=bar[i-1];

  for (i = len-1; i>= 0; i--)sa[--bar[Rank_x[i]]] = i;

  //這段代碼用到桶排序思想,就是先進桶,再從不同桶里一個一個往外倒

  //sa[]保存的是1-前綴排序結果,Rank_x[]保存的是1-前綴時的各位置的排名

  for (k = 1,p = 1; p < len; k *= 2, m = p)

  {

  for (p = 0,i = len - k; i < len;i++) Rank_y[p++] = i;

  for (i = 0; i< len; i++) if (sa[i]>= k) Rank_y[p++] = sa[i] - k;

  //這段代碼對1-前綴時做第二關鍵字排序

  for (i = 0; i< len; i++) result_x[i]= Rank_x[Rank_y[i]];

  for (i = 0; i<= m; i++) bar[i] =0;

  for (i = 0; i< len; i++)bar[result_x[i]]++;

  for (i = 1; i<= m; i++) bar[i] +=bar[i-1];

  for (i = len-1; i>= 0; i--)sa[--bar[result_x[i]]] = Rank_y[i];

  //又用到了一次桶排序,注意體會,是在對第二關鍵字排好序的序列上對

  //第一關鍵字進行桶排序求得了新的sa[],result_x[]保存的是關于第二關鍵字

  //排好序的序列的第一關鍵字排名,為桶排序做好準備

  for (t = Rank_x,Rank_x = Rank_y,Rank_y= t,p = 1,Rank_x[sa[0]]= 0,i = 1; i

  Rank[sa[i]] =cmp(Rank_y,sa[i],sa[i-1],k)?p-1:p++;

  //求新的名次數組,可以發現名次可能一樣,當名次各不一樣時就是排序完成時。

  }

  }

1 2 3 4 5 下一頁
  相關推薦:

  軟考程序員考試歷年真題重點題總結及答案

  2011年上半年軟考報名時間及方式匯總

  軟考程序員考試歷年真題匯總(2007年-2010年)

文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本軟件水平考試網內容,請注明出處。
主站蜘蛛池模板: 中文字幕有码在线播放 | 国产片一级 | 好男人在线社区www在线视频一 | 国产精品99久久免费观看 | 五月天婷婷免费观看视频在线 | 黄视频网址 | 亚洲欧美香蕉在线日韩精选 | 99re在线 | 特级夫妻大片免费在线播放 | 色黄大色黄女片免费看软件 | 茄子视频黄| a级成人毛片免费视频高清 a级片免费网站 | 国产日韩中文字幕 | 久久久噜噜噜久久网 | 久国产精品视频 | 欧美a一级 | 国产手机看片 | 玖玖玖精品视频免费播放 | 老司机免费福利午夜入口ae58 | 最新一本大道香蕉综合 | 免费在线成人 | 亚洲欧洲精品视频在线观看 | 欧美日韩国 | 天天干天日 | 国产成人在线视频播放 | 一级香蕉视频 | 狠狠干五月天 | 亚洲国产综合精品 | 午夜激情免费 | 宅男深夜免费必看 | 小明永久视频免费播放 | 国产精品欧美久久久久天天影视 | 最新亚洲精品国自产在线观看 | 最新中文字幕在线播放 | 国产成人手机在线好好热 | 婷婷久久综合网 | 黑丝裸足 | 狼人久草 | 成人欧美视频在线观看播放 | 成人午夜在线播放 | 在线观看日韩精品 |