freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于姓名排序算法動態(tài)演示系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計說明書-在線瀏覽

2024-09-11 14:51本頁面
  

【正文】 的同名類、 字節(jié)代碼 檢查,并提供安全管理機制(類 SecurityManager)讓 Java 應(yīng)用設(shè)置安全哨兵。 Java 程序(后綴為 java 的文件)在 Java 平臺上被編譯為體系結(jié)構(gòu)中立的 字節(jié)碼 格式(后綴為 class 的文件),然后可以在實現(xiàn)這個 Java 平臺的任何系統(tǒng)中運行。 Java 語言是可移植的 [10]。 Java 系統(tǒng)本身也具有很強的可移植性, Java 編譯器是用 Java 實現(xiàn)的, Java陜西理工學(xué)院畢業(yè)設(shè)計 第 3 頁 共 80 頁 的運行環(huán)境是用 ANSIC 實現(xiàn)的。如前所述, Java 程序在 Java 平臺上被編譯為字節(jié)碼格式,然后可以在實現(xiàn)這個 Java 平臺的任何系統(tǒng)中運行。 Java 是性能略高的 [10]。 Java 語言是原生支持多線程的 [10]。通常有兩種方法來創(chuàng)建線程:其一,使用型構(gòu)為 Thread(Runnable)的構(gòu)造子將一個實現(xiàn)了 Runnable 接口的對象包裝成一個線程,其二,從 Thread 類派生出子類并重寫 run方法,使用該子類創(chuàng)建的對象即為線程。線程的活動由一組方法來控制。 Java 語言是動態(tài)的 [10]。 Java 程序需要的類能夠動態(tài)地被載入到運行環(huán)境,也可以通過網(wǎng)絡(luò)來載入所需要的類。另外, Java 中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。 Java 對對象技術(shù)的全面支持和 Java 平臺內(nèi)嵌的 API 能縮短應(yīng)用系統(tǒng)的開發(fā)時間并降低成本。特別是 Java 企業(yè)應(yīng)用編程接口( Java Enterprise APIs)為企業(yè)計算及 電子商務(wù)應(yīng)用 系統(tǒng)提供了有關(guān)技術(shù)和豐富的類庫。 SE(J2SE), standard edition,標(biāo)準(zhǔn)版,是我們通常用的一個版本,從 JDK 開始,改名為 Java SE。 ME(J2ME),micro edition,主要用于移動設(shè)備、嵌入式設(shè)備上的 java 應(yīng)用程序,從 JDK 開始,改名為 Java ME。 JDK包含的基本組件包括: javac – 編譯器,將源 程序 轉(zhuǎn)成字節(jié)碼。 javadoc – 文檔生成器,從源碼注釋中提取文檔。 java – 運行編譯后的 java 程序( .class 后綴的)。 Javah:產(chǎn)生可以調(diào)用 Java 過程的 C 過程,或建立能被 Java 程序調(diào)用的 C過程的頭文件。 Jconsole: Java 進行 系統(tǒng) 調(diào)試和監(jiān)控的工具。它是功能豐富的 JavaEE 集成開發(fā)環(huán)境 ,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持 HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。 MyEclipse 目前支持 Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC 數(shù)據(jù)庫鏈接工具等多項功能。根據(jù)官方最新消息, MyEclipse 20xx陜西理工學(xué)院畢業(yè)設(shè)計 第 4 頁 共 80 頁 已經(jīng)正式發(fā)布! MyEclipse 20xx[2]支持 HTML JQuery和主流的 Javascript 庫。你甚至還可以通過 HTML5 可視化設(shè)計器設(shè)計令人難以置信的用戶界面。 陜西理工學(xué)院畢業(yè)設(shè)計 第 5 頁 共 80 頁 2 排序算法 直接插入排序 (1) 基本原理 假設(shè)待排序的 n 個記錄 {L0, L1,?, Ln}順序存放在數(shù)組中,直接插入法在插入記錄 Li(i=1,2,?, n1)時,記錄被劃分為兩個區(qū)間 [L0,Li1]和 [Li+1,Ln1],其中,前一個子區(qū)間已經(jīng)排好序,后一個子區(qū)間是當(dāng)前未排序的部分,將關(guān)鍵碼 Ki 與 Ki1Ki2,?, K0 依次比較,找出應(yīng)該插入的位置,將記錄 Li 插,然后將剩下的 i1 個元素按關(guān)鍵詞大小依次插入該有序序列,沒插入 一個元素后依然保持該序列有序,經(jīng)過 i1 趟排序后即成為有序序列。排序示例見圖 。 public void insertSort(String[] src) { for (int i = 2。 i++) { if (src[i].pareTo(src[i 1]) 0) { src[0] = src[i]。 int j = i 2。 src[0].pareTo(src[j]) 0。 } src[j + 1] = src[0]。最好情況下,即初始序列有序,執(zhí)行 n1 趟,但每一趟只比較一次,移動元素兩次,總的比較次數(shù)是 (n1),移動元素次數(shù)是 2(n1)。最壞情況 (非遞增 )下,最多比較 i 次,因此需要的比較次數(shù)是:所以,時間復(fù)雜度為 O(n2)。由于前半部分為已排好序的數(shù)列,這樣我們不用按順序依次尋找插入點,可以采用折半查找的方法來加快尋 找插入點的速度 [2]。 public void binaryInsertionSort(String[] src) { for (int i = 2。 i++) { // 將 src[i]暫存在 src[0] src[0] = src[i]。 while (low = high) { int m = (low + high) / 2。 } else { low = m + 1。 j = high + 1。 } // 插入 src[high + 1] = src[0]。附加空間 O(1)。它的基本思想是,通過一趟排序?qū)⒋庞涗浄指畛瑟毩⒌膬刹糠郑渲幸徊糠钟涗浀年P(guān)鍵字均比另一部分記錄的關(guān)鍵字小則可分別對兩部分記錄繼續(xù)進行排序,以達到整個序列有序。由此可以將位置 i 作分界線,將序列 { [s],[s+1],...,[t]}分割成兩個子序列 { [s],[s+1],...,[i1]}和{ [i+1],[s+1],...,[t]}。排序示例見圖 。 public int partition(String[] l,int low,int high) { //用字表的第一個記錄軸的記錄 l[0] = l[low]。 //從表的兩端交替向中間掃描 while(low high) { //將比軸記錄小的記 錄移到低端 while(low high amp。 l[high].pareTo(pivotkey) = 0) { high。 while(lowhighamp。l[low].pareTo(pivotkey)= 0) { ++low。 } 陜西理工學(xué)院畢業(yè)設(shè)計 第 8 頁 共 80 頁 //軸記錄到位 l[low] = l[0]。 } (3) 時間復(fù)雜度分析 如果每一次分劃操作后,左、右兩個子序列的長度基本相等,則快速排序的效率最高,其最好情況時間復(fù)雜度為 O(nlog2n);反之,如果每次分劃操作所產(chǎn)生的兩個子序列,其中之一為空序列,此時,快速排序效率最低,其最壞情況時間復(fù)雜度為 O(n2)??焖倥判虻钠骄闆r時間復(fù)雜度為O(nlog2n)。排序示例見圖 。 public void selectSort(String[] src){ for (int i = 0。 i++) { int j = selectMinKey(src, i)。 src[i] = src[j]。 }} } (3)時間復(fù)雜度分析 該算法運行時間與元素的初始排列無關(guān)。 陜西理工學(xué)院畢業(yè)設(shè)計 第 9 頁 共 80 頁 歸并排序 (1) 基本原理 是將兩個或兩個以上的有序表組合成一個有序的表。 圖 歸并排序示例 (2) 算法描述 將有序順序鏈表 sr[i...m]和 sr[m+1...n]歸并為有序的 sr[i...n] private void merge(String[] sr,int s,int m,int t){ String[] tmp = new String[t s +1]。 for(。amp。k++) { if(sr[i].pareTo(sr[j])0){ tmp[k] = sr[i]。 }else { tmp[k] = sr[j]。 } }//for end if(i = m){ //將剩余的 sr[i...m]復(fù)制到 tmp中 for(。i++){ tmp[k] = sr[i]。 }//for end }//if end if(j = t){ //將剩余的 sr[j...t]復(fù)制到 tmp中 for(。j++){ tmp[k] = sr[j]。 }//for end }//if end (tmp, 0, sr, s, )。排序示例見圖 。 private void updateNext(Node[] nodes) { for (int i = 2。 i++) { int q = 0。 while (nodes[i].getValue().pareTo(nodes[p].getValue()) 0) { q = p。 } nodes[q].setNext(i)。 } } (3) 時間復(fù)雜度分析 陜西理工學(xué)院畢業(yè)設(shè)計 第 11 頁 共 80 頁 和直接插入排序相比,不同之處僅是以修改 2n 次指針值代替移動記錄,排序過程中所需進行的關(guān)鍵字間的比較次數(shù)相同,因此,表插入排序的時間復(fù)雜度仍是 O(n2); 堆排序 (1) 基本原理 堆含義表明,所有非終點結(jié)點的值均不大于(或不小于)其左右孩子結(jié)點;若輸出堆頂?shù)淖钚≈抵?,使得剩?n1個元素的序列重又建成一個堆,則得到 n個元素中 的次小值,如此反復(fù)執(zhí)行,便得到一個有序序列;堆排序解決 2個問題: ; 頂之后,調(diào)整剩余元素成為一個新的堆; 堆調(diào)整示例見圖 。 public void adjustHeap(String[] num, int s, int t) { int i = s。 j = t。amp。// 找出較大者把較大者給 num[i] if (num[i].pareTo(num[j])0) break。 num[i] = num[j]。 i = j。堆排序的最壞時間復(fù)雜度為 O(nlogn)。由于建初始堆所需的比較次數(shù)較多,所以堆排序不適宜于記錄數(shù)較少的文件。 基數(shù)排序( MSD) (1) 基本原理 是一種借助多關(guān)鍵字排序的思想對單邏輯關(guān)鍵字進行排序的方法; MSD:先對最主要位關(guān)鍵字K0 進行排序,將序列分成若干子序列,每個子序列中的記錄都具有相同的 K0 值,然后分別就 每個子序列對關(guān)鍵字 K1 進行排序,按 K1 值得不同再分成若干更小的子序列,依次重復(fù)直至每個子序列中都有相同的關(guān)鍵字 [1]。 圖 MSD 排序示例 (2) 算法描述 對字符串順序鏈表 data每個關(guān)鍵字第 power的字符比較排序,返回值為空。 int[] order = new int[26]。 int k = 0。 for (int i = 0。 i++) { if (data[i] == null || .equals(data[i])) break。 } else { pos = 0。 order[pos]++。 for (int i = 0。 i++) { if (order[i] 1 amp。 power getStringMaxLength(temp[i])) { (1)。// msd in every sibling bucks } } for (int i = 0。 i++) { for (int j = 0。 j++) { if (temp[i][j] != null) { data[k++] = temp[i][j]。 陜西理工學(xué)院畢業(yè)設(shè)計 第 14 頁 共 80 頁 3 系統(tǒng)設(shè)計 系統(tǒng)模塊結(jié)構(gòu) 根據(jù)需求分析,按功能劃分 8 個模塊,分別是:鏈表插入排序模塊、直接插入排序模塊、折半插入排序模塊、選擇排序模塊、歸并排序模塊、堆排序模塊、基數(shù)排序模塊。 圖 系統(tǒng)模塊結(jié)構(gòu)圖 模塊算法流程圖 (1) 直接插入排序 直接插入排序算法流程圖如圖 所示。 s r c [ i ] = s r c [ i 1 ] 。s r c [ 0 ]
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1