原创 數據結構和算法-009 雙向鏈表

雙向鏈表,就是在一個節點(node)有兩個指針(point),分別指向前一個節點和後一個節點,它和鏈表最大的區別就是,鏈表是單向的,只能找到後面的節點,不能往前找,雙向鏈表顧名思義,雙向的,可以往後找,也可以往前。這段代碼有點複雜,先看看,

原创 數據結構和算法-010 數組排序 希兒排序

希兒排序基本思想先取一個小於n的整數d1作爲第一個增量,把文件的全部記錄分組。所有距離爲d1的倍數的記錄放在同一個組中。先在各組內進行直接插入排序;然後,取第二個增量d2<d1重複上述的分組和排序,直至所取的增量=1(<…<d2<d1),即

原创 數據結構和算法-011 數組排序 快速排序

快速排序(Quicksort)是對冒泡排序的一種改進。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對

原创 數據結構和算法-005 數組排序 二分法檢索

二分法檢索二分法檢索(binary search)又稱折半檢索,二分法檢索的基本思想是設字典中的元素從小到大有序地存放在數組(array)中,首先將給定值key與字典中間位置上元素的關鍵碼(key)比較,如果相等,則檢索成功;否則,若key

原创 數據結構和算法-006 堆棧

堆棧,都懂得。先進後出。直接看代碼吧,實現以下功能:創建堆棧壓入值彈出值查看棧頂值壓入一組值 public class TheStack {          private String [] stackArray;          p

原创 數據結構和算法-007 隊列

隊列,另一個經典的數據結構。先進先出。直接看代碼吧,實現以下功能:創建隊列插入值取出值值查看當前值順序插入public class TheQueue {          private String[] queueArray;     

原创 數據結構和算法-008 鏈表

鏈表,要簡單講一講。鏈(Link)一般有兩個部分,一是節點(node)和指針(point)Node:存放內容(content)Point:指向下一個節點,把節點穿起來,就形成鏈表看代碼, 這個的link其實是一個節點(Node),link穿

原创 數據結構和算法-002 數組排序 冒泡排序

冒泡排序1算法原理1. 冒泡排序算法的運作如下:(從後往前)2. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。3. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。4. 針對所有的

原创 數據結構和算法-003 數組排序 選擇排序

選擇排序1選擇排序編輯思想n個記錄的文件的直接選擇排序可經過n-1趟直接選擇排序得到有序結果:①初始狀態:無序區爲R[1..n],有序區爲空。②第1趟排序在無序區R[1..n]中選出關鍵字最小的記錄R[k],將它與無序區的第1個記錄R[1]

原创 數據結構和算法-001 數組

數組,都懂的,直接看代碼吧,實現以下功能:創建數組查找在索引上的值查找數組中是否含有值刪除在索引上的值添加一個值查找一個值在數組的位置public class ArrayStructures { private int[] theAr

原创 數據結構和算法-004 數組排序 插入排序

插入排序描述一般來說,插入排序都採用in-place在數組上實現。具體算法描述如下:⒈ 從第一個元素開始,該元素可以認爲已經被排序⒉ 取出下一個元素,在已經排序的元素序列中從後向前掃描⒊ 如果該元素(已排序)大於新元素,將該元素移到下一位置