C語言II部落格作業02

2022-07-05 18:12:08 字數 2768 閱讀 5204

這個作業屬於哪個課程

這個作業要求在**

/homework/11810

這個作業的目標

了解陣列相關知識,掌握選擇排序法和二分查詢法

學號20208966

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

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

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

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

輸入輸出

1 10 3 4 2 21 9 6 11 5

1,9 4,6

3 2 11 4 8 5 10 7 9 22

3,7 2,8

10 19 3 8 1 3 4 9 11 2

8,2 1,9

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

輸入輸出

11 23 3 5 2 7 14 22 9 15

3,710 19 3 8 1 9 6 11 5 13

1,91 10 3 4 2 21 9 7 66 22

1,9 3,7

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

輸入輸出

10,9 11 23 3 5 2 7 14 22 9

3,79,9 10 19 3 8 1 9 6

1,810,9 1 10 3 4 2 21 9 7 66

1,9 3,7

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

窮舉法是將元素乙個不漏的舉出來驗證,列舉所有可能,思路簡單,但運算量較大,解題效率不高,如果列舉範圍太大,在時間上就難以承受。

第二種解法與第一種無較大區別,

二分法是要在有序的陣列中查詢特定元素,將所有元素一分為二,找到中值,然後逐步縮小範圍,此演算法效率較高,運算時間較少

暫無更好演算法

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

1.氣泡排序:重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。

2.選擇排序:是一種簡單直觀的排序演算法,首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

3.歸併(合併)排序:是分治法的典型應用將每個問題分解成個個小問題,將每個小問題解決,然後合併。將一組無序數按n/2遞迴分解成只有乙個元素的子項,乙個元素就是已經排好序的了。然後將這些有序的子元素進行合併。

4.插入排序:在待排序的元素中,假設前面n-1(其中n>=2)個數已經是排好順序的,現將第n個數插到前面已經排好的序列中,然後找到合適自己的位置,使得插入第n個數的這個序列也是排好順序的。按照此法對所有元素進行插入,直到整個序列排為有序的過程,稱為插入排序

5.快速排序:從數列中挑出乙個元素,稱為 「基準」重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。

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

1 學習進度條(5分)

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

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

1.本週新學習的東西較少,學習了一維陣列的定義與應用,複習了之前所學的知識,選擇排序運用並沒有很熟練掌握,還需在演算法方面加強學習

2.之後每週的學習進度要慢慢增加,學習的內容也需不斷鞏固複習

3.不同的階段為自己設定不同的目標

氣泡排序:比較相鄰的元素,如果前乙個比後乙個大,交換之;

第一趟排序第1個和第2個一對,比較與交換,隨後第2個和第3個一對比較交換,這樣直到倒數第2個和最後1個,將最大的數移動到最後一位;

第二趟將第二大的數移動至倒數第二位

類似於水中冒泡,較大的數沉下去,較小的數慢慢冒起來,假設從小到大,即為較大的數慢慢往後排,較小的數慢慢往前排。

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