C語言II部落格作業02

2022-06-29 04:00:23 字數 2313 閱讀 6851

這個作業屬於哪個課程

這個作業要求在**

/homework/11808

這個作業的目標

練習選擇排序法

學號20209199

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

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

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

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

輸入資料

輸入陣列內的值

輸出資料

61 2 5 4

0 27

4 3 5 2

0 19

3 4 6 5

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

輸入資料

輸入陣列內的值

輸出資料

121 3 4 8

3 214

8 6 4 10

0 1 2 3

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

輸入資料

輸入陣列內的值

輸出資料

1812 1 3 5 6

3 420

18 15 3 2 5

0 4 2 3

228 8 14 12 10

0 4 1 4 2 3

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

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

第一種:**簡單易懂,但執行時間過長。

第二種:第一種的強化版。

第三種:執行時間相較前兩種有大幅縮減,精度也有所增加。

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

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

2.選擇排序:從第乙個數開始,每次和後面剩餘的數進行比較,若公升序,則如果後邊的數比當前數字小,進行交換,和後面的所有的數比較、交換後,就會將當前的最小值放在當前的位置。

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

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

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

1 學習進度條(5分)

周/日期

這週所花的時間

**行數

學到的知識簡介

目前比較困惑的問題

第一周五小時

120如何將檔案裡的資料放入**中

找不到**錯誤的原因

第二週七小時

210指標中的選擇排序法

如何更改變數型別

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