C語言II部落格作業02

2022-07-03 03:39:10 字數 3199 閱讀 4578

這個作業屬於哪個課程

這個作業要求在**

/homework/11824

這個作業的目標

1.學生知道在哪種情況下可以使用構造資料型別—陣列進行資料的處理。2.掌握用一維陣列進行程式設計 。3.掌握選擇排序法和二分查詢法。

學號20209070

第七章 陣列 7.17.1 輸出所有大於平均值的數。

1.學生知道在哪種情況下可以使用構造資料型別—陣列進行資料的處理

2.掌握用一維陣列進行程式設計

3.掌握選擇排序法和二分查詢法

2.1 完成pta作業,並給出程式設計題完成截圖(5分)

第一題:7-1 年齡與疾病 (10 分)

任務描述

某醫院想統計一下某項疾病的獲得與否與年齡是否有關,需要對以前的診斷記錄進行整理,按照0-18、19-35、36-60、61以上(含61)四個年齡段統計的患病人數佔總患病人數的比例。

第二題:7-2 選擇排序法 (100 分)

在主函式中首先輸入乙個整數n(12.2 題目:快速尋找滿足條件的兩個數

能否快速找出乙個陣列中的兩個數字,讓這兩個數字之和等於乙個給定的值,為了簡化起見,我們假設這個陣列中肯定存在至少一組符合要求的解。

解法一:採用窮舉法,從陣列中任意取出兩個數字,計算兩者之和是否為給定的數字。

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

解法三:對陣列進行排序,然後使用二分查詢法針對arr[i]查詢sum-arr[i]。

要求:1.根據三種解法給出相應的**,並給出測試資料。(15分)

解法一:採用窮舉法,從陣列中任意取出兩個數字,計算兩者之和是否為給定的數字。

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

測試資料:

輸入資料

輸出資料

4   3   1 2 3

1,35   5   1 2 3 4 5

1,4   2,3

6   6   1 2 3 4 5 6

1,5   2,4

解法三:對陣列進行排序,然後使用二分查詢法針對arr[i]查詢sum-arr[i]。

測試資料:

陣列資料

定值結果

1 2 3 4 5 6

61 5,2 4

9 6 3 2 1 4 7 8 5

62 4, 1,5

2.請說明三種演算法的區別是什麼?你還可以給出更好的演算法嗎?(10分)

1.窮舉法是把每一項元素都做了比較,思路比較簡單易於操作,但是效率不高時間冗長。

2.第二種解法與第一種解法非常相像,只不過是做減法而已。

3.二分法是在排列好的陣列中,取其中值作比較,再逐漸縮小範圍繼續比較,效率很高但最難操作。

4.暫時還在想更好的方法來排序,仍在學習中。

2.3 請搜尋有哪些排序演算法,並用自己的理解對集中排序演算法分別進行描述(5分)

1.選擇排序法:在未排序的n個數找到最小的數,將他與第乙個數交換,然後,在剩下未排序的n-1個數中找到最小數,將他與第二個數交換,如此迴圈。

2.氣泡排序法:將乙個列表中的兩個元素進行比較,並將最小的元素交換到頂部。兩個元素中較小的會冒到頂部,而較大的會沉到底部,該過程將被重複執行,直到所有元素都被排序。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。

3.插入排序:通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。

4.希爾排序:遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法,插入排序在對幾乎已經排好序的資料操作時,效率高,即可以達到線性排序的效率

但插入排序一般來說是低效的,因為插入排序每次只能將資料移動一位。

5.歸併排序:把資料分為兩段,從兩段中逐個選最小的元素移入新資料段的末尾。可從上到下或從下到上進行。

6.快速排序:在區間中隨機挑選乙個元素作基準,將小於基準的元素放在基準之前,大於基準的元素放在基準之後,再分別對小數區與大數區進行排序。

1.學習進度條(5分)

周/日期

這週所花的時間

累計**行

學到的知識點簡介

目前比較疑惑的問題

第一周/3.1-3.7

11h230

對上學期全部知識進行了一遍複習及檔案讀取**的演示 (涉及指標)

想進一步學習指標,這樣提取檔案覺得很神奇

第二週/3.8-3.14

12h256

陣列的定義,簡單排序以及查詢

二分法查詢 還是不太明白

2.累積**行和部落格字數(5分)

周/日期

累計**行數

部落格字數

第一周/3.1-3.7

2301237

第二週/3.8-3.14

3.學習內容總結和感悟(5分)

對陣列的排序方法還是沒掌握,特別是二分法。插入排序也是同樣有待提高。各種結構的掌握還是不行,在寫**時明顯感到不熟悉。慢慢的覺得學習難度越來越高,且內容越來越豐富,希望自己提高學習的效率。

氣泡排序:

演算法原理

氣泡排序演算法的運作如下:(從後往前)

1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

3.針對所有的元素重複以上的步驟,除了最後乙個。

4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

C語言II部落格作業02

作業屬於哪個課程 班級的鏈結 這個作業要求在 作業要求的鏈結 這個作業的目標 熟練運用陣列進行程式設計,學會使用一維陣列進行程式設計,掌握選擇排序法和二分查詢法 學號20208927 2.1 完成pta作業,並給出程式設計題完成截圖 2.2 題目 快速尋找滿足條件的兩個數 能否快速找出乙個陣列中的兩...

C語言II部落格作業02

這個作業屬於哪個課程 這個作業要求在 homework 11423 這個作業的目標 學習檔案的使用與知識 學號 20209165 1.學生知道在哪種情況下可以使用構造資料型別 陣列進行資料的處理 2.掌握用一維陣列進行程式設計 3.掌握選擇排序法和二分查詢法 能否快速找出乙個陣列中的兩個數字,讓這兩...

C語言II部落格作業02

這個作業屬於哪個課程 這個作業要求在 homework 11808 這個作業的目標 熟練的掌握陣列的編譯概念還有排序法 學號 20209222 第七章 陣列 7.17.1 輸出所有大於平均值的數 1.學生知道在哪種情況下可以使用構造資料型別 陣列進行資料的處理 2.掌握用一維陣列進行程式設計 3.掌...