C語言II部落格作業02

2022-06-29 03:03:10 字數 2244 閱讀 3032

c語言ii部落格作業02

這個作業屬於哪個課程

這個作業要求在**

homework/11810

這個作業的目標

《掌握選擇排序法和二分查詢法》

學號<20208971>

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

7-1 年齡與疾病 (10 分)

7-2 選擇排序法 (100 分)

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

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

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

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

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

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

方法1:

方法2:

方法3:

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

一二種沒什麼區別,運算耗時相同,演算法很近似。第三種方法比較不錯,先將陣列排序,再從陣列中間開始判斷,若中間值大於所尋值,則再從陣列前半部分的中間值進行判斷,比一二解法節省運算時間

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

氣泡排序法:比較相鄰的兩個數,如果前者比後者大,則進行交換。每一輪排序結束,選出乙個未排序中最大的數放到陣列後面。

公升級版氣泡排序法:通過從低到高選出最大的數放到後面,再從高到低選出最小的數放到前面,如此反覆,直到左邊界和右邊界重合。當陣列中有已排序好的數時,這種排序比傳統氣泡排序效能稍好。

直接插入排序:和交換排序不同的是它不用進行交換操作,而是用乙個臨時變數儲存當前值。當前面的元素比後面大時,先把後面的元素存入臨時變數,前面元素的值放到後面元素位置,再到最後把其值插入到合適的陣列位置。

希爾(shell)排序:在直接插入排序的思想下設定乙個最小增量dk,剛開始dk設定為n/2。進行插入排序,隨後再讓dk=dk/2,再進行插入排序,直到dk為1時完成最後一次插入排序,此時陣列完成排序。

選擇排序:依次選出陣列最小的數放到陣列的前面。首先從陣列的第二個元素開始往後遍歷,找出最小的數放到第乙個位置。再從剩下陣列中找出最小的數放到第二個位置。以此類推,直到陣列有序。

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

1 學習進度條(5分)

周/日期

這週所花的時間

**行學到的知識點簡介

目前比較迷惑的問題

第一周3.5

100檔案

應用不熟悉

第二週4

150陣列

好難懂,就會一點點

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