C語言II部落格作業02

2022-07-01 02:12:11 字數 2661 閱讀 5826

這個作業屬於哪個課程

這個作業要求在**

/homework/11822

這個作業的目標

學習了解陣列,掌握用一維陣列進行程式設計,選擇排序法和二分查詢法

學號20209155

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

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

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

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

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

解法一:

測試資料

輸入輸出

0 1 2 3 4 5 6 7 8 9

156 9 ,7 8

0 1 2 3 4 5 6 7 8 9

145 9, 6 8

解法二:

測試資料

輸入輸出

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

----

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

9 8 7 6 5 4 3 2 1 0

120 6 ,1 5,2 4

9 8 7 6 5 4 3 2 1 0

140 4, 1 3

解法三:

測試資料

輸入輸出

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

----

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

0 2 4 6 8 1 3 5 7 9

123 9,4 8, 5 7,...

0 1 2 3 4 5 6 7 8 9

145 9, 6 8,..

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

區別:前兩種演算法都需要多次遍歷陣列,時間複雜度高於第三種演算法,第三種演算法每次去掉一半的查詢元素,大大的減少了所需要的時間。
1.氣泡排序(bubble sort) 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

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

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

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

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

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

周/日期

這週所花的時間

**行數

學到的知識點簡介

目前比較迷惑的地方

第一周/3/1

5h60

檔案呼叫檔案指標及引數設定不夠熟練

第二週/3/8

7h90

了解陣列,掌握用一維陣列進行程式設計,選擇排序法和二分查詢法

排序問題不太熟練

1.學好c語言需要多看書,多實踐。

2.學習他人優秀**對學好c語言很有幫助。

3.自己在程式設計方面還需要多花時間,提前自主學習新的知識。

4.多看點課外書開拓視野,同時需要提高打字速度以便更好地加快寫**的速度。

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