C語言 部落格作業02

2022-09-14 19:12:15 字數 2704 閱讀 9925

這個作業屬於哪個課程

這個作業要求在**

/homework/11824

這個作業的目標

掌握陣列進行程式設計,掌握各種排序法

學號20209048

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

第一題

第二題

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

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

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

輸入資料

輸出資料

20 2

40 4 1 3

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

輸入資料

輸出資料

----

----

122 3

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

輸入資料

輸出資料

----

----

200 4 1 3

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

第一種窮舉法**簡單,通過乙個乙個列舉出自己所輸入的值,從中挑選適合的值,運算時間長,並且效率不高;

第二種方法相比第一種方法,差不多太多;

第三種方法相比前面兩種,它先對陣列進行乙個排序,然後使用二分法查詢,這種方法執行時間減少,提高了效率。

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

1.氣泡排序:不斷重複比較相鄰的兩個元素,交換兩個元素使其順序真確,重複地進行直到沒有再需要交換!

2.選擇排序:於氣泡排序相似,不斷從未排列的數中尋找最小(大)值然後將其排列。

3.插入排序:插入排序演算法是基於某序列已經有序排列的情況下,通過一次插入乙個元素的方式按照原有排序方式增加元素。插入排序的基本思想是,每次將1個待排序的記錄按其關鍵字大小插入到前面已經排好序的子串行中,尋找最適當的位置,直至全部記錄插入完畢。執行過程中,若遇到和插入元素相等的位置,則將要插人的元素放在該相等元素的後面,因此插入該元素後並未改變原序列的前後順序。

4.歸併排序:將已有序的子串行合併,得到完全有序的序列。

5.快速排序:快速排序的基本思想是通過一趟排序演算法把所需要排序的序列的元素分割成兩大塊,其中,一部分的元素都要小於或等於另外一部分的序列元素,然後仍根據該種方法對劃分後的這兩塊序列的元素分別再次實行快速排序演算法,排序實現的整個過程可以是遞迴的來進行呼叫,最終能夠實現將所需排序的無序序列元素變為乙個有序的序列。

6.堆排序:把最大堆堆頂的最大數取出,將剩餘的堆繼續調整為最大堆,再次將堆頂的最大數取出,這個過程持續到剩餘數只有乙個時結束。

7.希爾排序:先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序:

8.計算排序:將輸入的資料值轉化為鍵儲存在額外開闢的陣列空間中....(無語 最看不懂的)

9.桶排序:將陣列分到有限數量的桶子裡,然後對每個桶子再分別排序,最後將各個桶中的資料有序的合併起來。

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

1 學習進度條(5分)

| 周/日期 | 這週所花的時間 | **行數 | 學到的知識簡介 |目前比較困惑的問題 |

| ---- | ---- | ---- | ---- | ---- | ---- |

| 第一周/3.1~3.7 | 11h | 116 |檔案和測試資料|不懂提取檔案的**含義|

|第二週/3.8~3.14|12h|130|利用陣列計算平均值,各種排序法|對各種解法的理解不深,運用不熟|

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

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

總結:1.這週學習了陣列的運用,陣列不僅可以輸入資料,還能將資料儲存下來,方便了不少;在使用不同的解法去解決問題的時候才發現自己有很多很多的知識點完全不懂,不同的解法有其各自的優點,這讓我收穫不少。

2.氣泡排序的原理是:從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中最大的乙個或最小的乙個。這個數就會從序列的最右邊冒出來。

以從小到大排序為例,第一輪比較後,所有數中最大的那個數就會浮到最右邊;第二輪比較後,所有數中第二大的那個數就會浮到倒數第二個位置……就這樣一輪一輪地比較,最後實現從小到大排序。它的特點是排序多少輪,就有多少個數字已經按排序要求排好了,它們不需要再比較。寫 j

C語言 部落格作業02

這個作業屬於哪個課程 c語言程式設計 這個作業要求在 c語言部落格作業02 我在這個課程的目標是 將想法在計算機上表達出來 這個作業在那個具體方面幫助我實現目標 了解計算機語言設計 參考文獻 提問的智慧型 答 提問之前,應該先想想這個問題上自己是否盡力去求解了,如果沒有就先自己嘗試。發問時,要知道你...

C語言 部落格作業02

這個作業屬於哪個課程 c程式語言設計 這個作業要求在 我在這個課程的目標是 學習基礎程式語言c語言,基本掌握c語言的思維方向 這個作業具體在哪個方面幫助我實現目標 程式設計的訓練,markdown的語法練習,編譯器的安裝 參考文獻 markdown語法小結 提問的智慧型 pta系統常見問題解答 mi...

C語言 部落格作業02

問題 答案這個作業屬於哪個課程 c語言程式設計 這個作業要求在 我在這個課程的目標是什麼 學好c語言,打好基礎,可以熟練的打好 和程式設計 這個作業在哪個具體的方面幫助我實現目標 學會了如何提問,對程式設計有了初步的了解,該怎麼樣打 參考文獻 提問的智慧型 pta系統常見問題解答 c語言程式與設計 ...