5000數據排序

數據結構

實驗報告**

一、實驗目的和要求

完成5000數據排序,並顯示運行時間。

二、實驗環境

處理器:Intel Core2 Duo CPU

安裝內存(RAM)4.00 GB

系統類型:64 windows7操作系統

IDECode::Blocks 12.11

編譯器:GCC 4.7

三、實驗內容

完成5000數據排序,並顯示運行時間。  

四、實驗過程

4.1 任務定義和問題分析

問題一:程序運行非常快,而我們學過time(0) 函數只能精確到秒,很難體現出每次實驗中的差別。

問題二:如果每次運行程序都輸入或者隨機產生5000個數據做實驗,則會消耗大量時間,且不能保證每次實驗數據都相同,會造成實驗誤差。

問題三:不同的數據本身順序不同可能影響排序用時。

4.2 數據結構的選擇和概要設計

實驗都將採用數組來儲存和處理所有數據。

4.3 詳細設計

設計流程圖:

 

 

 

 

 

 

1)。先寫一個程序分別向data1.txtdata2.txtdata3.txt分別不同的寫入5000個數據,其中data1.txt5000以內的隨機數,data2.txt0~4999的順序數,data3.txt5000~1的順序數。

2)。使用clock() 函數來計時,能精確到毫秒。

3)。首先使用c++自帶的sort() 函數分別對三組數據進行測試以做對比,再使用我們學過的冒泡法,改良冒泡法進行試驗,最後使用快速排序法進行試驗。

五、測試及結果分析

5.1 實驗數據

參見:

data1.txt

data2.txt

data3.txt

5.2 結果及分析

記錄測試結果,實驗中遇到的問題和相對應的解決辦法,對主要算法的時間和空間等性能的分析結果。要求附上運行界面截圖。

(1) 程序有對文本的操作,應使用<fstream>頭文件,sort()函數包含在<algorithm>庫、頭文件中,slock()函數包含在<time.h>頭文件。

(2) 兩個數字之間用空格隔開,能直接使用流操作符“ >> ”傳入到數組中。

(3) slock()函數得到的結果是clock_t類型(實際是long長整型型)。

sort()函數:對三組數據處理的都很快。

 

 

 

冒泡法:僅對data2順序數處理相對較快,但跟sort()函數比相差甚遠。

 

 

 

改良冒泡法:因爲改良冒泡法在冒泡法的基礎上每次交換都設置一個交換點,所以在data2中能體現出優勢,而data1data3中優勢並不是很明顯(在data3中甚至是劣勢)

 

 

 

快速排序:快速排序是較爲快速的排序了,而且因數據差異改變不大(但對data2data3中還是處理不夠好)

 

六、實驗收穫

完成實驗後的收穫、總結、心得

 

七、參考文獻

書本:

c++程序設計》——機械工業出版社

文章:

《八大排序算法》

windows各種計時函數總結》

八、附錄(源代碼)

參見:sort.cpp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章