查找 |
排序 |
5.選擇排序法:html
selectionSort方法實現兩個循環,外層循環控制下一個最小值存儲在那個位置,內層循環經過掃描全部大於等於外層循環指定索引的位置來找出剩餘列表的最小值。git
序列{ 8, 5, 2, 6, 9, 3, 1, 4, 0, 7 }進行選擇排序的實現過程: 程序員
宏觀圖: 算法
6.插入排序法:數組
序列{ 6, 5, 3, 1, 8, 7, 2, 4 }進行插入排序的實現過程以下: 數據結構
宏觀圖: 學習
7.冒泡排序法:ui
宏觀: .net
8.快速排序法:設計
9.歸併排序法:
宏觀:
基數排序法 |
問題解決和分析:實例變量:在類的聲明中,屬性是用變量來表示的。這種變量就稱爲實例變量,是在類聲明的內部,但在類的其餘成員方法以外聲明的。類的每一個對象維護它本身的一份實例變量的副本。
問題解決和分析:
1.指示應該在註釋元素(以及包含在該註釋元素中的全部程序元素)中取消顯示指定的編譯器警告。注意,在給定元素中取消顯示的警告集是全部包含元素中取消顯示的警告的超集。例如,若是註釋一個類來取消顯示某個警告,同時註釋一個方法來取消顯示另外一個警告,那麼將在此方法中同時取消顯示這兩個警告。
2.根據風格不一樣,程序員應該始終在最裏層的嵌套元素上使用此註釋,在那裏使用纔有效。若是要在特定的方法中取消顯示某個警告,則應該註釋該方法而不是註釋它的類。
問題1:在實現pp9.3sorting類改編時,我對於歸併排序和快速排序的循環次數的計算感受到很迷茫,我不知道該如何計算。
public static <T extends Comparable<T>> void mergeSort(T[] data) { times = times2 = 0; long startTime=System.nanoTime(); mergeSort(data, 0, data.length - 1); long endTime = System.nanoTime(); long temp = times + times2; System.out.println("程序運行時間:" + (endTime - startTime) + "ns"); System.out.println("比較次數爲:"+ temp); } private static int times; private static <T extends Comparable<T>> void mergeSort(T[] data, int min, int max) { if (min < max) { times++; int mid = (min + max) / 2; mergeSort(data, min, mid); mergeSort(data, mid+1, max); merge(data, min, mid, max); } }
經過引入times,來在循環中經過計算最後times相加的和。
還有一種是:
public static <T extends Comparable<T>> void mergeSort(T[] data) { int count=0; long startTime = System.nanoTime();//獲取開始的時間; count = mergeSort(data, 0, data.length - 1); long endTime = System.nanoTime();//獲取結束的時間; System.out.println("程序所需時間:"+ (endTime - startTime) + "ns"); System.out.println("比較次數:"+ count); } private static <T extends Comparable<T>> int mergeSort(T[] data, int min, int max) { int count = 0; if (min < max) { int mid = (min + max) / 2; mergeSort(data, min, mid); mergeSort(data, mid+1, max); merge(data, min, mid, max); } return count; }
經過對下邊類改爲有返回值的類,將count返回。
正確使用Markdown語法(加1分)
模板中的要素齊全(加1分)
教材學習中的問題和解決過程, (加3分)
代碼調試中的問題和解決過程, 無問題
感想,體會真切的(加1分)
點評認真,能指出博客和代碼中的問題的(加1分)
20172320
基於評分標準,我給以上博客打分:8分。得分狀況以下:
這周將排序全學了一遍,感受有些理解起來還好,寫起來也還算好些,可是有些知道它運行的流程但代碼實現作不到,這就讓人很着急。我還會再看看代碼,將二分法實現的歸併排序,快速排序以及基數排序再多研究一下,把不懂的搞懂。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 1/1 | 8/8 | |
第二週 | 1306/1306 | 1/2 | 20/28 | |
第三週 | 1291/2597 | 1/3 | 18/46 | |
第四周 | 4361/6958 | 2/5 | 20/66 | |
第五週 | 1755/8713 | 1/6 | 20/86 |
計劃學習時間:10小時
實際學習時間:8小時
改進狀況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)