C語言II部落格作業02

2022-06-28 19:57:08 字數 2483 閱讀 7310

|這個作業屬於哪個課程| |

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

| 這個作業要求在** |homework/11808 |

| 這個作業的目標 |更好的掌握陣列和排序方法 |

| 學號 | 20209208 |

第七章 陣列 7.17.1 輸出所有大於平均值的數

1.學生知道在哪種情況下可以使用構造資料型別—陣列進行資料的處理

2.掌握用一維陣列進行程式設計

3.掌握選擇排序法和二分查詢法

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

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

輸入資料sum

輸入陣列值

輸出下標

21 2 1 4

0和26

2 2 3 4

1和3 0和3

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

1和2 0和3

62 3 4 5

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

輸入資料sum

輸入陣列值

輸出下標

----

----

----

2010 11 8 9 12

0和4 1和3

8040 41 42 38 39

0和4 1和3

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

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

三種解法的複雜程度不同,所需要的時間也不同,演算法的時間和空間複雜度都不一樣。暫時沒有更好的演算法。

1.氣泡排序:就是對每個下標i,取j從0到n-1-i(n是陣列長度)進行遍歷,如果兩個相鄰的元素s[j]>s[j+1],就交換,這樣每次最大的元素已經移動到了後面正確的位置

2.插入排序:插入排序又分為簡單插入排序和折半插入排序;簡單插入排序思想是每趟排序把元素插入到已排好序的陣列中,折半插入排序是改進的插入排序,由於前半部分為已排好序的數列,這樣我們不用按順序依次尋找插入點,可以採用折半查詢的方法來加快尋找插入點的速度

3.簡單選擇排序:選擇排序思想是對每個下標i,從i後面的元素中選擇最小的那個和s[i]交換

4.快速排序:快速排序是內排序中平均效能較好的排序,思想是每趟排序時選取乙個資料(通常用陣列的第乙個數)作為關鍵資料,然後將所有比它小的數都放到它的左邊,所有比它大的數都放到它的右邊

5.希爾排序:希爾排序是基於插入排序的一種排序演算法,思想是對長度為n的陣列s,每趟排序基於間隔h分成幾組,對每組資料使用插入排序方法進行排序,然後減小h的值,這樣剛開始時候雖然分組比較多,但每組資料很少,h減小後每組資料多但基本有序,而插入排序對已經基本有序的陣列排序效率較高

6.歸併排序:歸併排序的思想是將兩個有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。即先劃分為兩個部分,最後進行合併

7.堆排序:堆排序是基於選擇排序的一種排序演算法,堆是乙個近似完全二叉樹的結構,且滿足子結點的鍵值或索引總是小於(或者大於)它的父節點。這裡採用最大堆方式:位於堆頂的元素總是整棵樹的最大值,每個子節點的值都比父節點小,堆要時刻保持這樣的結構,所以一旦堆裡面的資料發生變化,要對堆重新進行一次構建

8.基數排序:基數排序是一種非比較型整數排序演算法,其原理是將資料按位數切割成不同的數字,然後按每個位數分別比較,在類似對百萬級的**號碼進行排序的問題上,使用基數排序效率較高

1 學習進度條(5分)

周/日期

這週所花時間

**行數

學到的知識點簡介

目前比較迷惑的問題

第一周2天

70檔案

檔案的如何執行,以及測試程式的編寫

第二週3天

78陣列以及選擇排序法

對排序法的選擇,陣列的定義

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

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

對c語言的學習越發深入

需要更加努力的學習

不斷擴大知識面

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