C語言II部落格作業02

2022-06-28 12:18:09 字數 2166 閱讀 8506

|這個作業屬於哪個課程 | |

| ---- | ---- | ---- |

|這個作業要求在** |homework/11807 |

|這個作業的目標 |學習使用陣列 |

| 學號 |20208936 |

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

2.2 題目:快速尋找滿足條件的兩個數

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

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

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

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

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

解法一:

解法二:

解法三:

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

窮舉法這個演算法很簡單,寫起來也很容易,但是效率不高。

解法二:對於每個數字arr[i],都需要查詢對應的sum-arr[i]在不在陣列中,很容易得到時間複雜度還是

較容易,相較於窮舉法沒得改進,但效率提高。

解法三:直接對兩個數字的和進行乙個有序的遍歷,從而降低演算法的時間複雜度,效率也高。其他有貪婪演算法,動態規劃演算法,分治演算法,回溯演算法,分支限界演算法。

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

演算法有氣泡排序,希爾排序,快速排序,歸併排序,二分查詢法等;

氣泡排序:陣列中相鄰的兩個元素進行比較,如果位於陣列左端的元素大於陣列右端的元素,則交換這兩個元素在陣列中的位置,直到序列成為有序排列。

希爾排序:演算法有所改進,先將待排記錄序列分割成為若干子串行分別進行插入排序,待整個序列中的記錄"基本有序"時,再對全體記錄進行一次直接插入排序。

快速排列:先從排序選擇乙個基準值,排序中大的記錄放它之後,小的放它前面。

歸併排序:將兩個或兩個以上的有序序列組合成乙個新的有序表。

二分查詢法:效率較高,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。

2.4 請給出本週學習總結(15分)

1 學習進度條(5分)周日期

這週所花時間

**行學到的知識點簡介

目前比較迷惑的地方

第一周3.3

5h120

檔案的基本概念

如何計算測試點和運算時間

第二週3.10

6h150

陣列的運用

陣列排序演算法的運用

2 累積**行和部落格字數

周**行

部落格字數

----

----

----

第一周120

1000

第二週150

3 用自己的話描述氣泡排序法

氣泡排序:首先比較相鄰的元素,小的元素放前面,對每一對相鄰元素做同樣的工作,針對所有的元素重複以上的步驟,除了最後乙個,持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

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

這周學習了新內容陣列,上個學期每次看到陣列都不太懂,現在理解了它的一些含義,知道如何去運用,但還是很不熟練,感覺別人寫題速度快,練習也多,自己也要加油了!

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.掌...