C語言II部落格作業02

2022-06-28 12:12:12 字數 2352 閱讀 2136

1.作業頭

這個作業屬於哪個課程

這個作業要求在**

/homework/11807

這個作業的目標

使用陣列解決一些問題

學號20208919

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

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

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

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

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

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

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

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

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

(我舉得是乙個例子,他要用窮舉的方法,我就用了乙個小的數)

輸入資料

輸出結果說明9

1和8 2和7 3和6 4和5

有四組19

9和10

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

輸入資料

輸出結果

說明12345

沒有就是沒有的意思

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

輸入資料

輸出資料

說明3 2 0 1 2

0 2有一組

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

第一種的話簡單粗暴,沒有什麼優點,數稍微大一點就不行了,(我也不知道對不對,反正我是這麼覺得的,我覺得窮舉法就是把每個數列出來,於是我就用了這個方法,有可能是我想的不對)

第二種的話就比第一種好,就算資料很大也沒關係

至於第三種吧,我也不知道優點在**,就是覺得**更複雜,好像也沒比第二種好

至於更好的演算法現在還沒有,可能會在以後的學習過程中會遇到好的方法

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

①氣泡排序:頭尾互換,將最大的數字沉底,最小的數字浮上。

②快速排序:選擇乙個數字作為基數,每次將比該數字大的放在後面,比該數字小的放在前面。

2.插入排序

③直接插入排序:將第乙個第二個元素排好序,然後將第三個元素插入已排好的元素中。

④希爾排序:當由n個元素時,取奇數i=n/2,將下標差值為i的數字分為一組,再次迴圈構成有序數列,直到i=1最後進行插入排序。

3.選擇排序:

⑤簡單選擇排序:選出最小的數和第乙個數交換,再在剩餘的數中又選擇最小的和第二個數交換,依次類推。

⑥堆排序:以公升序排序為例,利用小根堆的性質(堆頂元素最小)不斷輸出最小元素,直到堆中沒有元素。

4.歸併排序:

⑦二路歸併排序:將乙個無序的數列一直一分為二,直到分到序列中只有乙個數的時候,這個序列肯定是有序的,因為只有乙個數,然後將兩個只含有乙個數字的序列合併為含有兩個數字的有序序列,這樣一直進行下去,最後就變成了乙個大的有序數列。

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

1 學習進度條(5分

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

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