1.二分查詢
1.前提:該陣列是乙個有序陣列
2.思路:要考慮陣列中存在多個相同值的情況,以公升序陣列為例
//向右收集相同值
temp = mid +1;
while
(temp < right && findval == arr[temp])}
return list;
}}2.插值查詢
1.前提:陣列是有序陣列
2.思路:同樣要考慮陣列中存在多個相同值的情況,以公升序陣列為例
//向右收集相同值
temp = mid +1;
while
(temp < right && findval == arr[temp])}
return list;
}}3.注意:關鍵字分布均勻指 arr = 這種情況
3.斐波那契數列
class
array
return f;
}}
1.基本介紹:底層結構是 陣列+鍊錶(區別 hashmap),陣列是鍊錶型別的陣列
2.應用例項:
3.思路:
//1. 定義員工節點類
class
emp//其他省略
}//2. 定義鍊錶類
class
emplinkedlist
emp curemp = head;
while
(curemp.
getnext()
!= null)
curemp.
setnext
(emp);}
// 刪除,修改 省略,該鍊錶的 crud 和之前的單向鍊錶是一樣的原理
// (2).遍歷鍊錶
public
void
showemp
(int no)
system.out.
println
("第"
+(no +1)
+"條鍊錶的資訊為:");
emp curemp = head;
while
(curemp.
getnext()
!= null)
system.out.
println()
;}// (3).根據 id 查詢雇員
public emp findbyid
(int id)
emp curemp = head;
while
(true)if
(curemp.
getid()
== id)
curemp = curemp.
getnext()
;}}}
// 3.定義雜湊錶類
//我們通過操作雜湊表來管理員工的 crud,雜湊表通過呼叫員工鍊錶來實際操作員工的 crud
class
hashtable
}//編寫乙個雜湊函式,保證我們可以根據 id 找到員工應該儲存到哪條鍊錶
public
inthashfunction
(int id)
// (1).新增員工
public
void
add(emp emp)
[int emplinkedlistindex =
hashfunction
(emp.
getid()
);//先拿到陣列下標
emplinkedlistarray[emplinkedlistindex]
.add
(emp)
;//再將員工新增到對應鍊錶中
]// (2).遍歷雜湊表,即遍歷所有鍊錶
public
void
showhashtable()
}// (3).根據 id 查詢員工
public
void
findbyid
(int id)
(int emplinkedlistindex =
hashfunction
(id)
;//先根據 id 找到對應的鍊錶
emp emp = emplinkedlistarray[emplinkedlistindex]
.findbyid
(id);if
(emp != null)
else
)}
資料結構與演算法四
資料結構是資料儲存的方式,演算法則是處理資料的方法,通常我們通過分析演算法的時間複雜度和空間複雜度來判斷它的好壞。通常我們學資料結構的同時也會學習演算法,資料結構的不同就會導致演算法的不同,資料結構的選擇對演算法效率會產生重大的影響,所以資料結構與演算法緊密聯絡。乙個問題可能會有多種演算法,我們當然...
資料結構與演算法(四)
結構體 1 為什麼出現結構體 為了表達一些複雜的資料,而普通的基本資料型別變數無法表示 2 什麼是結構體 結構體是使用者根據自己的需求定義的一種新的資料型別 3 如何使用結構體 兩種方式 struct student int main void printf d s d n st.number,st...
資料結構與演算法《四》
一切推理都必須從觀察與實驗得來。伽利略 伽利雷 編寫乙個高效的演算法來搜尋 m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性 示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,13,14,17,24 18...