C語言II部落格作業02

2022-06-29 06:24:13 字數 3051 閱讀 2852

這個作業屬於哪個課程

這個作業要求在**

homework/11810

這個作業的目標

使用構造資料型別—陣列進行資料的處理,掌握用一維陣列進行程式設計以及掌握選擇排序法和二分查詢法

學號20208974

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

7-1 疾病與年齡

7-2 選擇排序法

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

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

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

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

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

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

解法一:

解法二:

解法三:

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

解法一:**比較簡單,需要將陣列中每個數兩兩與給定值去比較,判斷兩個值之和是否為給定值。

解法二:和解法一的區別不是很大,解法二相比於解法一在時間上有所折扣,但是效率更高。

解法三:先將陣列排序,排序後可以按照順序進行判斷,一次組合,免去了亂碼尋找的過程,簡化過程,節約時間。

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

1.氣泡排序,它遍歷所有的資料,每次對相鄰元素進行兩兩比較,如果順序和預先規定的順序不一致,則進行位置交換;這樣一次遍歷會將最大或最小的資料上浮到頂端,之後再重複同樣的操作,直到所有的資料有序。

2.選擇排序,先在資料中找出最大或最小的元素,放到序列的起始;然後再從餘下的資料中繼續尋找最大或最小的元素,依次放到排序序列中,直到所有資料樣本排序完成。

3.插入排序,它通過構建有序序列,對於未排序的資料序列,在已排序序列中從後向前掃瞄,找到相應的位置並插入,類似打撲克牌時的碼牌。

4.希爾排序在插入排序的基礎上進行了改進,它的基本思路是先將整個資料序列分割成若干子串行分別進行直接插入排序,待整個序列中的記錄基本有序時,再對全部資料進行依次直接插入排序。

5.歸併排序,首先將資料樣本拆分為兩個子資料樣本, 並分別對它們排序, 最後再將兩個子資料樣本合併在一起; 拆分後的兩個子資料樣本序列, 再繼續遞迴的拆分為更小的子資料樣本序列, 再分別進行排序, 直到最後資料序列為1,而不再拆分,此時即完成對資料樣本的最終排序。

6.快速排序,使用分治法策略來把乙個序列分為兩個子串行。首先從數列中挑出乙個元素,並將這個元素稱為「基準」。重新排序數列,所有比基準值小的元素擺放在基準前面,所有比基準值大的元素擺在基準後面(相同的數可以到任何一邊)。在這個分割槽結束之後,該基準就處於數列的中間位置。這個稱為分割槽操作。之後,在子串行中繼續重複這個方法,直到最後整個資料序列排序完成。

7.堆排序,是指利用堆這種資料結構所設計的一種排序演算法。

8.計數排序,是一種穩定的線性時間排序演算法。計數排序使用乙個額外的陣列c,其中第i個元素是待排序陣列a中值等於 i的元素的個數。然後根據陣列c來將a中的元素排到正確的位置。

9.桶排序也稱為箱排序,它是將陣列劃分到一定數量的有序的桶裡,然後再對每個桶中的資料進行排序,最後再將各個桶裡的資料有序的合併到一起。

10.基數排序,是一種非比較型整數排序演算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。

2.4 請給出本週學習總結(15分)1 學習進度條(5分)

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

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

感悟:

1.要對課本上的知識進行拓展與延申,自主學習,與同學進行交流與討論。

2.時刻注意細節,不要想當然,寫完要檢查幾遍,寫更好的**。

3.多做題目,熟練掌握用陣列進行程式設計,排序法和二分查詢法。

氣泡排序法:是一種計算機領域的較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。演算法名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端(公升序或降序排列),故名「氣泡排序」。

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