C語言II部落格作業02

2022-06-27 21:09:08 字數 2890 閱讀 1243

這個作業屬於哪個課程

這個作業要求在**

homework/11810

這個作業的目標

鞏固之前學習的內容,探索陣列的知識

學號20208967

1 完成pta作業,並給出程式設計題完成截圖

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

2.1.根據三種解法給出相應的**,並給出測試資料。

2.2請說明三種演算法的區別是什麼?你還可以給出更好的演算法嗎?

查詢的思維不同,第乙個是乙個乙個按照計算思維查詢。第二個是利用了數學判別式查詢是否存在另一半。第三個是最流行的查詢方法之一,它是一種效率較高的查詢方法,不過這個前提必須是有序的陣列。

我覺得可以用雜湊表查詢法,通過對記錄的關鍵字值進行運算,直接求出結點的位址,是關鍵字到位址的直接轉換方法。

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

有選擇排序法,插入排序,希爾(shell)排序,氣泡排序,快速排序,堆排序等;

選擇排序是在陣列中找到最小的數放在陣列第乙個位置,然後從剩下的元素中找到最小排到第二個位置,接下來,以此類推;

插入排序對於少量元素的排序,它是乙個有效的演算法。它的基本思想是將乙個記錄插入到已經排好序的有序表中,從而乙個新的、記錄數增1的有序表。在其實現過程使用雙層迴圈,外層迴圈對除了第乙個元素之外的所有元素,內層迴圈對當前元素前面有序表進行待插入位置查詢,並進行移動。(插入排序的工作方式像許多人排序一手撲克牌。開始時,我們的左手為空並且桌子上的牌面向下。然後,我們每次從桌子上拿走一張牌並將它插入左手中正確的位置。為了找到一張牌的正確位置,我們從右到左將它與已在手中的每張牌進行比較。拿在左手上的牌總是排序好的,原來這些牌是桌子上牌堆中頂部的牌);

氣泡排序原理是比較兩個相鄰的元素,將值大的元素交換到右邊。第一次比較:首先比較第一和第二個數,將小數放在前面,將大數放在後面。比較第2和第3個數,將小數 放在前面,大數放在後面。......如此繼續,知道比較到最後的兩個數,將小數放在前面,大數放在後面,重複步驟,直至全部排序完成。在上面一趟比較完成後,最後乙個數一定是陣列中最大的乙個數,所以在比較第二趟的時候,最後乙個數是不參加比較的。然後依次類推。

快速排序採用分治的思想,先從數列中取出乙個數作為基準數。分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。再對左右區間重複第二步,直到各區間只有乙個數。

堆排序是利用堆這種資料結構而設計的一種排序演算法,堆排序是一種選擇排序。堆是具有以下性質的完全二叉樹:每個結點的值都大於或等於其左右孩子結點的值,稱為大頂堆;或者每個結點的值都小於或等於其左右孩子結點的值,稱為小頂堆。

4 請給出本週學習總結

4.1 學習進度條

周這周花的時間

**行數

目前迷惑的地方

第一周10h

102第二週

15h250

對陣列的選擇排序法理解了,但自己寫總是會執行超時

4.2 累積**行和部落格字數

4.3 學習內容總結和感悟

1.陣列的英文單詞為array,陣列能高效的處理大量的資料。在c99標準之前,宣告陣列時只能在方括號中使用整形常量表示式,即由整形常量構成的表示式。sizeof表示式也被視為整形常量,但是const值不是。另外,表示式的值必須大於0。以前的c90不支援例如float a8【n】這種寫法,而c99標準允許這樣宣告,這建立了一種新型陣列,稱為變長陣列,c11放棄了這一創新的舉措,把其設定為可選,而不是語言必備的特性。

2. 在陣列中不越界的前提下,為了方便和不容易搞錯,可以把下標0的空間空著,從下標1開始進行處理。雖然多費了一點空間,但是這樣和平時習慣一致,解題時不太容易搞混。

3.二分查詢是一種非常快速的查詢演算法,二分查詢又叫折半查詢。它對要查詢的序列有兩個要求,一是該序列必須是有序的(即該序列中的所有元素都是按照大小關係排好序的,公升序和降序都可以),二是該序列必須是順序儲存的。

4.氣泡排序的思想是從第乙個數開始,兩個進行比較,如果是要從小到大排序,那麼如果前乙個數大於後乙個數,則交換位置。然後進行第二個數和第三個數進行比較......

直到進行第n-1個數和第n個數比較。之後進行第二輪,第乙個數和第二個數比較,第......直到第n-2個數與n-1個數進行比較,每次減少一次比較,後面依次排下每輪最大值。氣泡排序進行的輪數為 陣列個數趟-1,每輪需要比較的數為 陣列個數-1-(已經進行的趟數-1)。

氣泡排序**可寫成

void bubble_sort(int arr,int sz)

for(flag==0)}}

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