這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/zswxy/SE2020-3/ |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-3/homework/11423 |
這個作業的目標 | <學習文件的使用與知識> |
學號 | <20209165> |
一、本周教學內容&目標
第七章 數組 7.17.1 輸出所有大於平均值的數
1.學生知道在哪種情況下可以使用構造數據類型—數組進行數據的處理
2.掌握用一維數組進行編程
3.掌握選擇排序法和二分查找法
二、本周作業(總分:50分)
2.1 完成PTA作業,並給出編程題完成截圖(5分)
某醫院想統計一下某項疾病的獲得與否與年齡是否有關,需要對以前的診斷記錄進行整理,按照0-18、19-35、36-60、61以上(含61)四個年齡段統計的患病人###數占總患病人數的比例。
選擇排序法
在主函數中首先輸入一個整數N(1<N<=100),然后再輸入N個整數存入數組中,然后用選擇排序法對數組中的N個元素從大到小排序,最后輸出數組所有元素。
2.2 題目:快速尋找滿足條件的兩個數
能否快速找出一個數組中的兩個數字,讓這兩個數字之和等於一個給定的值,為了簡化起見,我們假設這個數組中肯定存在至少一組符合要求的解。
解法一:采用窮舉法,從數組中任意取出兩個數字,計算兩者之和是否為給定的數字。
解法二:對數組中的每個數字arr[i]都判別Sum-arr[i]是否在數組中。
解法三:對數組進行排序,然后使用二分查找法針對arr[i]查找Sum-arr[i]。
要求:
1.根據三種解法給出相應的代碼,並給出測試數據。(15分)
解法1
數組的數據 | 定值 | 預期結果 |
---|---|---|
1 2 3 4 5 | 5 | 1 4,2 3 |
解法2
數組的數據 | 定值 | 預期結果 |
---|---|---|
1 2 3 4 5 | 5 | 1 4,2 3 |
解法3
###2.請說明三種算法的區別是什么?你還可以給出更好的算法嗎?(10分)
####算法1:窮舉法利用for的嵌套將數組中的每一個元素進行加法計算與核實。
####算法2:同樣是for的嵌套,但是用減法計算,是在第一個循環中進行減法,在第二個循環中核實與計算結果一樣的元素
####算法3:首先要將數組進行排序,再根據第二種算法的第一步,求出另一個數,再用二分查找法查找另一個數是在數組中。
2.3 請搜索有哪些排序算法,並用自己的理解對集中排序算法分別進行描述(5分)
選擇排序法:在數組中選擇一個最大或者最小的數排在前面,再從剩下的數中選擇排在后面。冒泡排序法:比如說升序排列,那么就依次相鄰兩個數比較大小,然后把大的數放在后面。插入排序法:它通過構建有序序列,對於未排序的數據序列,在已排序序列中從后向前掃描,找到相應的位置並插入。希爾排序法:希爾排序在插入排序的基礎上進行了改進,它的基本思路是先將整個數據序列分割成若干子序列分別進行直接插入排序,待整個序列中的記錄基本有序時,再對全部數據進行依次直接插入排序快速排序法:首先從數列中挑出一個元素,重新排序數列,所有比基准值小的元素擺放在基准前面,所有比基准值大的元素擺在基准后面(相同的數可以到任何一邊)。在這個分區結束之后,該基准就處於數列的中間位置。之后,在子序列中繼續重復這個方法,直到最后整個數據序列排序完成。歸並排序法:歸並排序嚴格遵循從左到右或從右到左的順序合並子數據序列, 它不會改變相同數據之間的相對順序, 因此歸並排序是一種穩定的排序算法.
2.4 請給出本周學習總結(15分)
1 學習進度條(5分)
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
第一周/03.08-03.015 | 250分鍾 | 201 | 數組可以儲存數據可以引用輸入數據 | 數組數據處理的多種方式 |