數據結構
實驗報告**
一、實驗目的和要求
完成5000數據排序,並顯示運行時間。
二、實驗環境
處理器:Intel Core2 Duo CPU
安裝內存(RAM):4.00 GB
系統類型:64 位windows7操作系統
IDE:Code::Blocks 12.11
編譯器:GCC 4.7
三、實驗內容
完成5000數據排序,並顯示運行時間。
四、實驗過程
4.1 任務定義和問題分析
問題一:程序運行非常快,而我們學過time(0) 函數只能精確到秒,很難體現出每次實驗中的差別。
問題二:如果每次運行程序都輸入或者隨機產生5000個數據做實驗,則會消耗大量時間,且不能保證每次實驗數據都相同,會造成實驗誤差。
問題三:不同的數據本身順序不同可能影響排序用時。
4.2 數據結構的選擇和概要設計
實驗都將採用數組來儲存和處理所有數據。
4.3 詳細設計
設計流程圖:
(1)。先寫一個程序分別向data1.txt,data2.txt,data3.txt分別不同的寫入5000個數據,其中data1.txt爲5000以內的隨機數,data2.txt爲0~4999的順序數,data3.txt爲5000~1的順序數。
(2)。使用clock() 函數來計時,能精確到毫秒。
(3)。首先使用c++自帶的sort() 函數分別對三組數據進行測試以做對比,再使用我們學過的冒泡法,改良冒泡法進行試驗,最後使用快速排序法進行試驗。
五、測試及結果分析
5.1 實驗數據
參見:
5.2 結果及分析
記錄測試結果,實驗中遇到的問題和相對應的解決辦法,對主要算法的時間和空間等性能的分析結果。要求附上運行界面截圖。
(1) 程序有對文本的操作,應使用<fstream>頭文件,sort()函數包含在<algorithm>庫、頭文件中,slock()函數包含在<time.h>頭文件。
(2) 兩個數字之間用空格隔開,能直接使用流操作符“ >> ”傳入到數組中。
(3) slock()函數得到的結果是clock_t類型(實際是long長整型型)。
sort()函數:對三組數據處理的都很快。
冒泡法:僅對data2順序數處理相對較快,但跟sort()函數比相差甚遠。
改良冒泡法:因爲改良冒泡法在冒泡法的基礎上每次交換都設置一個交換點,所以在data2中能體現出優勢,而data1和data3中優勢並不是很明顯(在data3中甚至是劣勢)
快速排序:快速排序是較爲快速的排序了,而且因數據差異改變不大(但對data2和data3中還是處理不夠好)
六、實驗收穫
完成實驗後的收穫、總結、心得
七、參考文獻
書本:
《c++程序設計》——機械工業出版社
文章:
八、附錄(源代碼)
參見:sort.cpp