資料結構實驗報告 1 時間複雜度 1

2021-04-22 16:34:46 字數 1633 閱讀 3967

《資料結構》

實驗報告

專業13物聯網

年級大二

姓名繆思婷

學號1317443007

指導老師黃河

實驗室使用日期

實驗三演算法的時間複雜度

一、實驗目的

1、幫助讀者複習c語言程式設計中的知識。

2、通過本實驗加深對時間複雜度的理解。

二、實驗內容

[問題描述]

1. 背景知識:

● 時間複雜度:

在電腦科學中,演算法的時間複雜度是乙個函式,它定量描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串的長度的函式。

● 氣泡排序

氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。

這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

● 氣泡排序演算法的運作如下:

1) 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

2) 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。

3) 針對所有的元素重複以上的步驟,除了最後乙個。

4) 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

詳細演算法可以參見以下鏈結:

● 選擇排序

選擇排序是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。

以此類推,直到所有元素均排序完畢。

可以參見以下鏈結:

2. 實驗內容:

生成8個整數陣列,分別使用冒泡法,選擇法進行排序,並比較排序所消耗的時間。

● 8個陣列分為4組,長度為10,100,1000,10000。

● 每組資料中其中乙份陣列中資料為隨機排列,另乙份陣列中資料為逆序排列(例如)。

[基本要求]

(1) 使用c或c++編寫程式完成上述實驗

(2) 可以使用clock函式獲取計算機的當前時間。

clock()函式獲得當前程式消耗時間(時鐘週期),所以兩次clock之間的差除以clocks_per_sec即可獲得當前時間消耗的時間(秒),詳細可以參見clock.cpp檔案。

三、設計思路

用rand()函式,隨機生成所需要的數,用系統核心內定時器的頻率來計算所經過的時間。

4、源**

void setrand(int size);

void setsequence(int size);

void bubble_sort(int a,int n);

void select_sort(int r, int n);

large_integer start;

large_integer end;

large_integer freq;

int ar[10000];

int size;

int main()

}} 五、測試結果

6、心得體會

本次實驗,用clock()函式對排序時間測定的,我對於各種排序全都了然於心,運用更加熟練。

資料結構實驗報告

實驗報告 實驗課程 資料結構 實驗專案實驗 專業 電腦科學與技術 姓名於凡 學號 10703070328 指導教師汪林林 實驗時間 2008 12 7 重慶工學院計算機學院 實驗一線性表 1.實驗要求 掌握資料結構中線性表的基本概念。熟練掌握線性表的基本操作 建立 插入 刪除 查詢 輸出 求長度及合...

資料結構實驗報告

實驗一線性表的基本操作 1 實驗目的2 2 實驗環境2 3 實驗內容,主要 除錯與執行 2 4 總結14 實驗二棧的基本操作 1 實驗目的15 2 實驗環境15 3 實驗內容,主要 除錯與執行 15 4 總結18 實驗三赫夫曼樹 1 實驗目的18 2 實驗環境18 3 實驗內容,主要 除錯與執行 1...

資料結構實驗報告

實驗題目 計算機與通訊工程學院 2014 實驗一線性表的應用 實驗目的 1 掌握線性表的邏輯結構定義 2 掌握線性表的兩種儲存結構 順序和鏈式 3 掌握順序表和煉表的定義及基本操作 實驗內容 通過程式設計完成具有一定實際意義的課題,加深對線性表應用的理解和掌握。參考題目如下所示。學生可在完成以下題目...