国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java實現數據排序算法

2019-11-18 15:41:02
字體:
來源:轉載
供稿:網友

  數據結構描述的是數據之間的關系。C++數據結構的存儲方式有順序、鏈接、索引、散列等形式,對數據的處理通常包括輸入、輸出、查找、更新、排序、插入、刪除等,當數據的存儲方式不同時,相應的處理實現算法也不盡相同。
如何采用一種簡便明了的方法分析C++的數據結構特點及各種存儲方式、處理方式之間的異同成為了計算機應用專業教育的一個難點。針對遠程開放教學學生大多數通過網絡課件自學這一特點,采用當今流行的跨平臺程序設計語言java實現對C++數據結構算法的模擬,可以很好地解決對數據存儲方式、處理方式的具體化問題。利用java語言程序設計的靈活性及交互性,實現數據的動態輸入,自動、分步、循環執行存儲處理過程,并在internet上發布。

  1、實現的功能

  使用Java技術編寫的Java applet 程序,在網頁上發布,可以方便與用戶交互,用戶可以初始化算法元素,可以選擇執行方式(自動執行或單步執行);可以起止程序的執行;顯示當前程序運行的狀態;同步顯示算法描述與算法過程的變化。這里我們以直接選擇排序(升序)為例子,來分析采用Java技術實現算法的摸擬演示。效果圖:

Java實現數據排序算法(圖一)

  說明:"直接排序數據",文本框用來接收用戶輸入的數據。"排序數據個數",顯示用戶輸入的數據數。"當前最小值",當前程序執行時的最小值。"運行狀態",顯示當前程序運行狀態。"確定輸入",接收用戶的輸入。"自動執行",根據用戶的輸入自動進行排序演示。"單步執行",根據用戶的輸入,用戶可以手動控制程序的執行過程。"結束演示",結束演示,等待下一次演示。"列表框",在程序執行過程中與圖形變化同步顯示相對應的算法描述。

2、分析算法并將其轉化為圖形符號

  直接選擇排序的基本思想是:每一趟 (例如第 i 趟,i = 0, 1, …, n-2) 在后面 n-i 個待排序對象中選出要害碼最小的對象, 作為有序對象序列的第 i 個對象。待到第 n-2 趟作完,待排序對象只剩下1個,就不用再選了。

  它的基本步驟是:在一組對象v[i]~v[n-1]中選擇具有最小要害碼的對象;若它不是這組對象中的第一個對象,則將它與這組對象中的第一個對象對調; 在這組對象中剔除這個具有最小要害碼的對象,在剩下的對象v[i+1]~v[n-1]中重復執行前兩步,直到剩余對象只有一個為止。
下面將用一系列的圖形符號表示出該算法的執行過程。假設將對

  36 25 48 12 65 43 20 58

  這一組數據進行直接排序

Java實現數據排序算法(圖二)

  向上箭頭前面為已排好序的數據,為一有序表;向上箭頭后面的數據為待排序區間,是一無序表;雙向向下箭頭表示兩數據交換。根據對排序過程分析,可以用下面圖形符號表示算法中的元素:

 Java實現數據排序算法(圖三)

  其中,向下箭頭表示當前正在排序區間內查找的元素,向上箭頭為當前排序區間的開始位置。

  3、輸入輸出處理的實現

  為了增強模擬程序的交互性,在程序中將引入元素的用戶輸入、程序執行過程中算法描述同步執行、程序運行狀態的顯示。在程序界面上定義一個單行文本框來讓用戶輸入元素,并將定義初始元素(定義可以放在init()中):

TextField edit1;
edit1 = new TextField(22);
add(edit1);
edit1.setText("36 25 48 12 65 43 20 58");

  在程序中定義StreamTokenizer類和array[]數組來接收用戶輸入的數據。 StreamTokenizer即令牌化輸入流的作用是將一個輸入流變成令牌流。這里使用的是StreamTokenizer.TT_NUMBER: 表示讀到的令牌是數字,數字的值是double型,可以從實例變量nval中讀取。

StringTokenizer stringt = new StringTokenizer(edit1.getText());
array = new int[stringt.countTokens() + 1];//定義數組
for(int i = 1; stringt.hasMoreTokens(); i++)//數組賦值
array[i] =Integer.valueOf(stringt.nextToken()).intValue();



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富顺县| 宜都市| 监利县| 时尚| 刚察县| 鹤庆县| 阿荣旗| 封开县| 同心县| 专栏| 昌邑市| 越西县| 酒泉市| 甘谷县| 将乐县| 舞阳县| 梅州市| 阜城县| 新营市| 志丹县| 望城县| 育儿| 宝应县| 绿春县| 绥棱县| 新乡市| 泾源县| 岚皋县| 阜康市| 淳安县| 恩平市| 浏阳市| 健康| 汝州市| 通化县| 夏河县| 鸡西市| 农安县| 临高县| 利辛县| 万山特区|