C語言II部落格作業02

2022-06-28 05:24:11 字數 2302 閱讀 3813

這個作業屬於哪個課程

這個作業要求在**

homework/11810

這個作業的目標

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

學號20208986

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

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

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

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

要求:解法一:

解法二:

解法三:

解法一是利用for迴圈先確定第乙個數,然後逐個與後面的數值進行對比是否符合目標值。

解法二相比第一種的不同就是它省略了計算步驟,節省了時間。

解法三事先排序再從中計算,若資料較大,運用二分法計算次數就較小,資料越大,二分法優勢更明顯。

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

2.氣泡排序:是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

3.插入排序:是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。

4.希爾排序:第乙個突破o(n2)的排序演算法,是簡單插入排序的改進版。它與插入排序的不同之處在於,它會優先比較距離較遠的元素。希爾排序又叫縮小增量排序。

5.歸併排序:是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為2-路歸併。

6.快速排序:通過一趟排序將待排記錄分隔成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序。

周/日期

所花時間

**行數

所學知識點

1/3.1-3.7

10h200

回顧所學知識點,了解檔案的使用

2/3.8-3.15

11h220

陣列的運用

內容總結:通過這一周的學習,我們了解了什麼是陣列,陣列的定義與引用,如何對陣列賦初值,如何引用陣列解決實際問題。

1.學習他人優秀**是學習c語言的乙個不錯的方法。

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