C語言II 作業02

2022-08-22 21:39:09 字數 1482 閱讀 2858

這個作業屬於哪個課程

這個作業要求在**

這個作業的目標

知道在哪種情況下可以使用構造資料型別—陣列進行資料的處理,掌握用一維陣列進行程式設計,掌握選擇排序法和二分查詢法

學號20208040

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

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

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

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

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

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

前兩種演算法耗時比第三種方法長。

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

排序演算法

描述1.氣泡排序

氣泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素「浮」到頂端,最終達到完全有序

直接插入排序

直接插入排序基本思想是每一步將乙個待排序的記錄,插入到前面已經排好序的有序序列中去,直到插完所有元素為止。

簡單選擇排序

簡單選擇排序是最簡單直觀的一種演算法,基本思想為每一趟從待排序的資料元素中選擇最小(或最大)的乙個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。

希爾排序

是插入排序的一種更高效的改進版本。但希爾排序是非穩定排序演算法。

快速排序

從數列中挑出乙個元素,稱為 「基準」所有元素比基準值小的擺放在基準前面所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊),在這個分割槽退出之後,該基準就處於數列的中間位置遞迴地把小於基準值元素的子數列和大於基準值元素的子數列排序。

2.4 請給出本週學習總結(15分) 這周學習了二分查詢法和選擇排序法,並回憶了陣列的概念以及特點。

氣泡排序   氣泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素「浮」到頂端,最終達到完全有序  氣泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素「浮」到頂端,最終達到完全有序

1 學習進度條(5分)

周次學習時間

-----------------

---------------

第一周0

第二週0

第三週1

第四周12

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

3 學習內容:

C語言II 作業02

這個作業屬於哪個課程 這個作業要求在 homework 11810 這個作業的目標 學習了解陣列,掌握用一維陣列進行程式設計,選擇排序法和二分查詢法 學號 20208991 解法一 比較簡單,需要將陣列中每個數兩兩與給定值去比較,判斷兩個值之和是否為給定值。解法二 較複雜,需要用給定值減去陣列中的其...

C語言II 作業02

這個作業屬於哪個課程 這個作業要求在 homework 11822 這個作業的目標 使我們了解並掌握一維陣列,並且自行去了解排序演算法 學號 20209179 一 本週教學內容 目標 第七章 陣列 7.17.1 輸出所有大於平均值的數 1.學生知道在哪種情況下可以使用構造資料型別 陣列進行資料的處理...

C語言II 作業02

這個作業屬於哪個課程 計科三班 這個作業要求在 這個作業的目標 學習和理解陣列,排序演算法 學號20209015 解法1 解法2 解法3 窮舉法 將陣列中的數乙個乙個去嘗試,直到找到結果。二分法 將陣列分為兩組,從中間開始嘗試,直到找到結果。二分法的速度比窮舉法快 1.氣泡排序 比較相鄰的兩個數,如...