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

正文內(nèi)容

算法可視化演示軟件開發(fā)畢業(yè)設(shè)計-文庫吧資料

2025-07-03 12:52本頁面
  

【正文】 們可隨機生成15個隨機數(shù):public void mousePressed(final MouseEvent e) { //隨機生成15個數(shù) Random rnd = new Random()。final JMenuItem openFileItemMenuItem = new JMenuItem()。 (其他途徑獲取數(shù)據(jù))。 (100, 100, 530, 570)。 ().setLayout(null)。其創(chuàng)建的方法如下:private void createContents() { frame = new JFrame()。//設(shè)置為可見的public static void main(String[] args) { new VisualFrame()。//使窗口顯示在屏幕中央 (EXIT_ON_CLOSE)。//將樹的按鈕加監(jiān)聽 setSize(200,200)。 (arg0)。 (sort)。//按鈕 }}}。(false)。 (500, 500)。//按鈕可用} if(()==tree){//用來判斷發(fā)起事件的控件是不是tree DisplayBinaryTree frame = new DisplayBinaryTree()。 (false)。 } catch (Exception e) { ()。 private ActionListener arg0=new ActionListener() { public void actionPerformed(ActionEvent arg0) {//實現(xiàn)按鈕操作的響應(yīng)方法// TODO Autogenerated method stub if(()==sort){ //用來判斷發(fā)起事件的控件是不是sort (new Runnable() { // 導(dǎo)致 runnable 的 run 方法在 EventQueue 的指派線程上被調(diào)用 public void run() { try { MainSortApp window = new MainSortApp()。首先定義排序可視化和二叉查找樹演示兩個按鈕:public class VisualFrame extends JFrame{ private JButton sort=new JButton(排序可視化)。 算法可視化演示軟件開發(fā)總體流程圖第四節(jié) 本章小結(jié)本章主要是對算發(fā)可視化演示系統(tǒng)進(jìn)行總體設(shè)計,設(shè)計了程序?qū)?yīng)的模塊,并畫了相應(yīng)的流程圖,為接下來的系統(tǒng)實現(xiàn)打下了堅實的基礎(chǔ)。如果在第一個分支時不是選擇的是排序演示,則輸入節(jié)點值,選擇插入、刪除、排序三種方式中的一種,然后展示相應(yīng)的效果,完了之后我們也可以繼續(xù)此操作,也可以結(jié)束此操作。本次設(shè)計我們所用的算法最多的就是排序算法,類SelectSort 和 BubbleSort 以及類InsertSort都繼承了Sort。他們既有共性又有特性,如果只考慮他們的共性,而不考慮他們的特性,就不能反映出他們之間的層次關(guān)系,不能完整、正確地對客觀世界,進(jìn)行抽象的描述,類TreeControl和類TreeView都有類JPanel的所有的特征,即有他們的共性。雖然算法不同,但它們之間還是有很多的共同之處。如果選擇的是二叉查找樹系統(tǒng)就可以對該系統(tǒng)進(jìn)行插入、刪除、排序操作。在排序算法的系統(tǒng)中主要是冒泡排序模塊、插入排序模塊、選擇排序模塊,實現(xiàn)排序算法的演示,而二叉查找樹模塊主要是實現(xiàn)二叉查找樹的插入、刪除、排序功能。需求分析在軟件的開發(fā)中是很關(guān)鍵的一步,一個軟件開發(fā)成功與否需求分析起著十分重要的作用,所以我們在開發(fā)一個軟件前,一定要做好需求分析。軟件環(huán)境:① 操作系統(tǒng):Windows XP、Windows Windows 8;② 相關(guān)應(yīng)用軟件:JDK、Eclipse。③二叉查找樹的查找路徑演示。二叉查找樹實現(xiàn)的功能① 二叉查找樹的插入演示。⑤ 可以生成隨機數(shù),然后進(jìn)行插入、選擇、冒泡三種排序演示。③ 實現(xiàn)對插入排序進(jìn)行演示,并顯示排序前后的數(shù)組,排序所交換的次數(shù)、比較的次數(shù)、探測的次數(shù)及其所用的總的時間。排序算法所實現(xiàn)的功能① 輸入少于20個小于650的整數(shù),并對其排序演示。第一節(jié) 系統(tǒng)功能需求一、系統(tǒng)設(shè)計目標(biāo)開發(fā)軟件首先做的是開發(fā)過程中最主要的就是系統(tǒng)的需求分析[15],了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備獨立分析和能力;提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力;設(shè)計并實現(xiàn)直觀、容易被理解的排序算法和二叉查找樹的動態(tài)演示系統(tǒng),是系統(tǒng)設(shè)計的目標(biāo)。 第三章 需求分析需求分析是軟件定義時期的最后一個階段,它的工作是軟件工程生命周期中的第一步,也是起決定性的一步,在需求分析階段我們需要全面了解整個系統(tǒng)的功能和性能方面的要求,為軟件設(shè)計打下堅實的基礎(chǔ)[14]。還介紹了關(guān)于圖形界面知識的概念,通過此本章的學(xué)習(xí),能讓大家怎樣完成圖形界面實現(xiàn),設(shè)計出更美觀的界面,對以后進(jìn)一步學(xué)習(xí)這部分的知識很有幫助。第四節(jié) 本章小結(jié)在本章中比較詳細(xì)的介紹了Java的相關(guān)知識及其發(fā)展史,了解到了Java的主要特性。當(dāng)有序表是靜態(tài)排序表時,易用順序表作為存儲結(jié)構(gòu),而采用二分排序?qū)崿F(xiàn)其排序操作。就維護表而言,二叉查找樹無須移動結(jié)點,只需修改指針即可,插入和刪除操作,其平均執(zhí)行時間為0(log2n)。在等概率的條件下,ASL=(1+2*2+3*4+4*3)/10=3ASL=(1+2+3+4+5+6+7+8+9+10)/10=由此可知,二叉查找樹排序算法的平均排序長度,主要取決于樹的高度,即與二叉樹的形態(tài)無關(guān)。如果結(jié)點A既有左子樹,又有右子樹,就令A(yù)的直接后繼(或者是直接前驅(qū))代替A,然后從二叉排序中刪去這個直接后繼(或者直接前驅(qū)),這樣就可以換成前面兩種情況了。刪除操作的過程一般按三種情況來處理的:假如刪除的結(jié)點是A是葉結(jié)點,就可以直接刪了,而不會改變該二叉樹的性質(zhì)。因為二叉查找樹是的定義是遞歸的,那么插入結(jié)點的過程是,如果原來的二叉樹是空的,就可以把結(jié)點直接插入進(jìn)去,如果不是空的,若關(guān)鍵字的值比根結(jié)點小,就將其出入到左子樹中,如果比根結(jié)點的值大,就要將其插入到右子樹中。如果二叉樹為空,就將新結(jié)點作為根結(jié)點。二叉查找樹或者是一棵空樹;或者是具有下列性質(zhì)的二叉樹: (1)若左子樹非空,則左子樹上所有結(jié)點的值均小于它的根結(jié)點關(guān)鍵字的值; (2)若右子樹非空,則右子樹上所有結(jié)點的值均大于它的根結(jié)點的關(guān)鍵值值; (3)左、右子樹也分別為二叉查找樹;由此定義可以知,二叉查找樹是一個遞歸的數(shù)據(jù)結(jié)構(gòu),可以很方便地使用遞歸算法對二叉查找樹進(jìn)行各種運算,根據(jù)二叉查找樹的定義,左子樹=根節(jié)點值=右子樹節(jié)點值,所以,對二叉查找樹進(jìn)行中序遍歷,可以得到一個非遞減的有序序列。在第i趟找到最小元素后,和第i個元素交換,可能會導(dǎo)致第i個元素與其含有相同關(guān)鍵字元素的相對位置發(fā)生改變,因此,簡單選擇排序是一個不穩(wěn)定的排序算法。時間效率:元素的移動操作很少不會超過3(n1)次,最好情況下移動次數(shù)為0,此時對應(yīng)的表已經(jīng)有序;但元素間比較的次數(shù)與元素的初始序列無關(guān),始終是n(n1)/2;所以時間復(fù)雜度始終是O(n*n)。簡單選擇排序的概念假設(shè)排序表為L[1...n],第i趟排序即從L[i...n]中選擇關(guān)鍵字最小的元素與L(i)交換,每一趟排序可以確定一個元素的最終位置,這樣經(jīng)過n1趟排序就可以使得整個排序表有序。當(dāng)為鏈?zhǔn)絻Υ鏁r可以從前往后排序指定元素的位置,通常的排序算法中,大部分都僅適用于順序的線性表。穩(wěn)定性:由于每次插入元素時總是從后向前先比較再移動的,所以不會出現(xiàn)相同元素的相對位置發(fā)生變化,即直接插入排序算法是一個穩(wěn)定的排序算法。平均情況下,考慮待排序元素是隨機的,此時可以取上述最好與最壞情況的平均值作為平均情況下的時間復(fù)雜度,總的比較次數(shù)與總的移動次數(shù)約為n*n/4。在最好的情況下,表中元素已經(jīng)有序,此時每插入一個元素,都只需比較移動一次而不用移動元素,因而時間復(fù)雜度為O(n)。直接插入排序的性能分析直接插入排序的性能分析如下:空間效率:僅使用了常數(shù)個輔助單元,因而空間復(fù)雜度為0(1)。將L(i)復(fù)制到L(k)。例如,已知待排序的一組記錄的初始序列如下所示:有序序列L[1…i1]L(i)無序序列L[i+1…n]為了實現(xiàn)將元素L(i)插入到已有序的子序列L[1.......i1]中我們需要執(zhí)行以下操作(為避免混淆,下面用”L[]”表示一個表,而L()表示一個元素排序L(i)在L[1.......i1中的出入位置k。在這里主要介紹直接插入排序。二、插入排序什么是插入排序它的基本思想就是每次將一個待排序的記錄,按其關(guān)鍵字大小插入到前面已經(jīng)排好的子序列中,直到完成了全部記錄插入。由此可以總結(jié)出冒泡排序的優(yōu)點是具有穩(wěn)定性,缺點是慢,每次只能移動相鄰的兩個數(shù)據(jù)。這種情況下:元素的比較次數(shù)==n(n1)/2元素的移動次數(shù):==3n(n1)/2從而最壞情況下時間復(fù)雜度為O(n*n)。冒泡排序的性能分析冒泡排序的性能分析如下:空間效率:僅使用了常數(shù)個輔助單元,因而空間復(fù)雜度為0(1)。冒泡排序的概念冒泡排序算法的基本思想是:假設(shè)待排序長為n,從后向前或者從前向后兩兩比較相鄰元素的值。每個事件有一個相應(yīng)的監(jiān)聽者接口,它規(guī)定了能夠接收(并處理)該類事件的方法的規(guī)范。事件源:有自己的方法,通過它像其注冊事件監(jiān)聽器,事件監(jiān)聽器是一個實例。 系統(tǒng)根據(jù)用戶的操作構(gòu)造出相應(yīng)事件類的對象。當(dāng)用戶執(zhí)行一個用戶界面級的操作時,會引發(fā)一個事件,通常一個鍵盤和鼠標(biāo)操作將引發(fā)一個系統(tǒng)事先定義好的事件,用戶程序只需要編寫代碼定義每個事件發(fā)生時程序應(yīng)做何種響應(yīng)即可[8]。調(diào)用容器的方法add()將組件加入容器,組件填入容器的順序?qū)凑盏谝恍械谝粋€、第一行第二個、……每個網(wǎng)格中都必須填入組件,假如希望是空白的網(wǎng)格,可以給它添加一個空的標(biāo)簽: add (new Label())。setLayout(new GridLayout(行數(shù), 列數(shù)))。網(wǎng)格布局管理器具有更復(fù)雜、功能更強的網(wǎng)格布局。可以把組件放在這五個位置的任意一個,假如沒有指定位置,就把中作為默認(rèn)的位置。布局管理器種類FlowLayout: 在一行上水平排列組件,直到該行沒有足夠的空間為止,然后另起一行繼續(xù)排列當(dāng)用戶縮放容器時,布局管理器將自動進(jìn)行控制,重新排列。調(diào)用每一個組件的setLocation()方法決定組件位置。當(dāng)容器需要確定組件大小和定位組件的時候,就會發(fā)消息給布局管理器對象,讓它完成該項工作。布局管理有流布局管理、邊界布局管理和網(wǎng)格布局三種布局管理器。在Java中還提供了支持用戶界面元素自動定位的布局工具。p) 刪除指定組件、add(Component p) 將指定組件放到容器中、add(Component p,int index), setLayout(LayoutManager它是一矩形域,在里面可以擺放其它的組件,也可以有自己的布局管理器。Dialog 表示沒有菜單條,但是不能改它的變大小。Java中的容器是用來放置其它組件的一種特殊部件(如標(biāo)簽、按鈕、文本框等),用Containers 來描述容器,容器組件Window 不需要其他組件支撐,獨立顯示。也就是說,容器只管將其他組件放入其中,而不管這些組件是如何放置的。二、容器和布局我們都知道,Java的GUI界面定義是由AWT類包和Swing類包來完成的[8]。而許多小的對象難以有效地被垃圾回收機制回收。因此,它在運行時裝載了大量的類。Swing也有著許多不足之處:比如Swing比AWT和SWT更多的內(nèi)存消耗。Swing基于MVC的結(jié)構(gòu)使得它可以發(fā)揮Java作為一門面向?qū)ο笳Z言的優(yōu)勢。⑥可擴展和靈活性。⑤成熟穩(wěn)定:由于它是純Java實現(xiàn)的,不會有SWT的兼容性問題。因此,你不用單獨地將它們隨你的應(yīng)用程序一起分發(fā)。較之SWT和AWT更面向?qū)ο?,也更靈活而可擴展。經(jīng)過多年的演化,Swing組件APIs變得越來越強大,靈活和可擴展。③好的組件API模型支持:Swing遵循MVC模式,這是一種非常成功的設(shè)計模式。②豐富的組件特性:Swing不僅包含了所有平臺上的特性,它還支持根據(jù)程序所運行的平臺來添加額外特性?;谒己玫目蓴U展性,除了標(biāo)準(zhǔn)組件,Swing還提供了大量的第三方組件。Swing具有以下幾點優(yōu)勢:①豐富的組件類型:Swing提供了非常廣泛的標(biāo)準(zhǔn)組件。SUN公司推出了新的用戶界面庫:Swing,相對AWT來說,Swing功能更強大、使用更方便,它的出現(xiàn)是使得Java的圖形用戶上了一個臺階[7]。第二節(jié) Java圖形界面技術(shù)概述一、 Java Swing相關(guān)概述在Java中設(shè)計圖形界面程序時,通常選用AWT組件和Swing組件。在委托事件處理模型中,用戶操作引發(fā)的事件對象仍然傳遞給相應(yīng)的組件,但是為了接受事件并進(jìn)行事件處理,組件必須注冊一個事件處理程序,這種事件處理程序稱為事件的監(jiān)聽程序(Listener)。但無論怎么說,我們都要需要先把Sun JDK掌握好。其中IBM的JDK包含的JVM(Java Virtual Machine)運行效率要比Sun JDK包含的JVM高出許多。因此掌握J(rèn)DK是學(xué)好Java的第一步。JDK是Java開發(fā)工具包(Java development kit))的縮寫,是整個Java的核心,是一種用于構(gòu)建在Java平臺上發(fā)布的應(yīng)用程序包括了Java運行環(huán)境(Java Runtime Envirement),一堆Java工具和Java基礎(chǔ)的類庫()。而在本次設(shè)計中主要涉及到的是Java Sw
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1