20182309 2019-2020-1 《數據結構與面向對象程序設計》第8周學習總結
教材學習內容總結
教材學習中的問題和解決過程
- 問題1:改進冒泡排序
- 問題1解決方案:設立以個flag,若是有一次沒有交換,那麼排序提早完成
- 問題2:改進線性查找
- 問題2解決方案:倒着查找,在0位置放一個哨兵等於查找的值,若是查到哨兵則未找到。能夠少在循環裏判斷一個值。
代碼調試中的問題和解決過程
public class HashTablelink {
private final String TAG="HashTablelink";
private SortedList[] hashArray;
private int arraySize;
public HashTablelink(int size){
arraySize=size;
hashArray=new SortedList[arraySize];
for(int i=0;i<arraySize;i++){
hashArray[i]=new SortedList();
}
}
public void displayTable(){
StringBuilder sb=new StringBuilder();
sb.append("[");
for(int j=0;j<arraySize;j++){
sb.append(hashArray[j].toString());
sb.append(",");
}
sb.append("]");
Log.v(TAG,"HastTableLink的值爲:"+sb.toString());
}
/**
* 首次哈希
* 將傳入的key通過hash算法,這裏使用的普通除以數組大小求餘的方法,而實際不是這麼簡單
* @param key
* @return
*/
public int hashFunc(int key){
return key%arraySize;
}
/**
* 插入元素
*/
public void insert(LinkHash item){
int key=item.getKey();
int hashVal=hashFunc(key);//哈希到的下標位置
hashArray[hashVal].insert(item);
}
/**
* 刪除元素
*/
public void delete(int key){
int hashVal=hashFunc(key);//哈希到的下標位置
hashArray[key].delete(key);
}
/**
* 查找元素
*/
public LinkHash find(int key){
int hashVal=hashFunc(key);//哈希到的下標位置
LinkHash theLink=hashArray[hashVal].find(key);
return theLink;
}
}

結對及互評
- 代碼中值得學習的或問題:
- 基於評分標準,我給本博客打分:11分。得分狀況以下:
- 正確使用Markdown語法加1分
- 模板中的要素齊全加1分
- 教材學習中的問題和解決過程, 二個問題加2分
- 代碼調試中的問題和解決過程, 一個問題加1分
- 本週有效代碼超過300分行的加2分
- 排版精美的加1分
- 代碼Commit Message規範的加1分
- 有動手寫新代碼的加1分
- 結對學習狀況真實可信的加1分
點評過的同窗博客和代碼
- 本週結對學習狀況
- 20182331
- 閱讀教材第13章章節內容
- 代碼託管到碼雲上
- 完成課後自測題,並參考答案學習
- 完成課後練習題
- 完成程序設計項目,至少完成pp13.2,pp13.6
學習進度條
目標 |
10000行 |
30篇 |
400小時 |
|
第一週 |
138/138 |
2/2 |
25/25 |
學會寫和上傳代碼,會編簡單的輸出程序 |
第二週 |
88/226 |
1/3 |
30/55 |
起文件名不能太長 |
第三週 |
898/1124 |
2/5 |
35/90 |
Java類裏面的方法和C語言的函數很像 |
第四周 |
632/1756 |
2/7 |
30/120 |
能夠用繼承extends簡化重複的代碼 |
第五週 |
770/2526 |
2/9 |
45/165 |
--amend -m能夠重命名沒push的文件 |
第六週 |
3947/6473 |
2/11 |
40/205 |
接口類的功能要分散,利用多繼承完成功能 |
第七週 |
1359/7832 |
3/14 |
35/240 |
|
第七週 |
273/8105 |
1/15 |
15/255 |
查找前先排序更好 |
參考資料