| 這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/ |
|---|---|
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11810 |
| 這個作業的目標 | 學習和運用數組,了解一些簡單的算法 |
| 學號 | 20208979 |
2.1 完成PTA作業,並給出編程題完成截圖(5分)




2.2 題目:快速尋找滿足條件的兩個數
解法一:采用窮舉法,從數組中任意取出兩個數字,計算兩者之和是否為給定的數字。


解法二:對數組中的每個數字arr[i]都判別Sum-arr[i]是否在數組中。


解法三:對數組進行排序,然后使用二分查找法針對arr[i]查找Sum-arr[i]。

2.請說明三種算法的區別是什么?你還可以給出更好的算法嗎?(10分)
區別:法一是最容易想到的思路通俗易懂容易接受。法二:和法一相比條件不同。法三:運用了算法在代碼運行上比其他兩種好。
2.3 請搜索有哪些排序算法,並用自己的理解對集中排序算法分別進行描述(5分)
答:排序方法:冒泡排序,選擇排序,插入排序,希爾排序,快速排序,歸並排序,堆排序。
冒泡排序:相鄰的兩個數進行比較。
選擇排序:從最小的排起,用第一個與后面進行比較,小的放到前面。
插入排序:找到一個數,與另外兩個數進行比較,若折合書比一個數大,比另外一個小就放在這兩個數中間。
希爾排序:對插入排序進行分組。
快速排序:將數組分為兩部分,小的一部分大的一部分然后進行比較。
歸並排序:先分組再進行兩兩歸並。
堆排序:與樹狀圖的形式差不多,堆頭與堆尾進行交換。
2.4 請給出本周學習總結(15分)
1 學習進度條(5分)
| 周/日期 | 所花時間 | 代碼數 | 本周所學知識 | 目前迷惑的地方 |
|---|---|---|---|---|
| 第一周 | 12h | 108 | 文件和回顧數據類型和表達式 | |
| 第二周 | 11h | 80 | 一維數組 | 許多算法不會 |
2 累積代碼行和博客字數(5分)

3學習內容:
(1):學習了一維數組的運用。
(2):學習了排序算法冒泡法。
(3):了解了二維數組。
冒泡排序法
要運用雙重for循環第一次循環是要交換的次數,第二次循環是相鄰元素的交換若滿足條件就交換直到將最大值(最小值)像氣泡一樣升上去或沉下來。
上次PTA排序代碼(運用冒泡法)

