背景
排序是計算機內經常進行的一種操作,其目的是將一組「無序」的記錄序列調整為「有序」的記錄序列。
假設含n個記錄的序列為
其相應的關鍵字序列為
這些關鍵字相互之間可以進行比較,即在它們之間存在著這樣乙個關係 :
kp1≤kp2≤…≤kpn
按此固有關係將上式記錄序列重新排列為的操作稱作排序。
排序演算法是電腦科學中最重要的研究問題之一。對於排序的研究既有理論上的重要意義,又有實際應用價值。它在計算機圖形、計算機輔助設計、機械人、模式識別、及統計學等領域具有廣泛應用。 常見的排序演算法有起泡排序、直接插入排序、簡單選擇排序、快速排序、堆排序等。
例1:有時候應用程式本身就需要對資訊進行排序。為了準備客戶賬目,銀行需要根據支票的號碼對支票排序;
例2:在乙個繪製互相重疊的圖形物件的程式中,可能需要根據乙個「在上方」關係將各物件排序,以便自下而上地繪出物件。
例3:在乙個由n個數構成的集合上,求集合中第i小/大的數。
例4:對乙個含有n個元數的集合,求解中位數、k分位數。
實驗目的
基於教材內容,任選兩種排序演算法,實現並比較效能。
基本要求
(1)至少要有一種排序演算法的效能優於o(n2)
(2)對實現的排序演算法進行實驗比較,實驗比較資料參見教材7.8章節
(3)排序演算法要基於教材,測試輸入的整數資料檔案(5個,檔案中資料規模分別是100,1k,10k,100k和1m),排序結果也要輸出到檔案中。
(4)要在螢幕上輸出排序過程所花費時間
**實現
#include#include#includeusing namespace std;
large_integer frequency;
int a[1000001],temp[1000001];
int count=0;
void init(ifstream &infile)
}void print(ofstream &outfile)
while(lright)
a[curr]=temp[i1++];
else if(cmp(temp[i1],temp[i2]))
a[curr]=temp[i1++];
else
a[curr]=temp[i2++];
}} int main()
{ ifstream test_100("100.txt");
ifstream test_1k("1k.txt");
ifstream test_10k("10k.txt");
ifstream test_100k("100k.txt");
ifstream test_1m("1m.txt");
ofstream output_100("output_100.txt");
ofstream output_1k("output_1k.txt");
ofstream output_10k("output_10k.txt");
ofstream output_100k("output_100k.txt");
ofstream output_1m("output_1m.txt");
double dff,begin,end,dfm,dft;
init(test_100);
queryperformancefrequency(&frequency);//獲得時鐘頻率
dff=(double)frequency.quadpart;
queryperformancecounter(&frequency);//獲得初始值
begin=frequency.quadpart;
qsort(a,0,100);
queryperformancecounter(&frequency);//獲得終止值
end=frequency.quadpart;
dfm=(double)(end-begin);
dft=dfm/dff;
print(output_100);
cout<< "快速排序100:"《完整**及輸入輸出樣例:
資料結構實驗八 排序
實驗八 排序 實驗目的 掌握直接插入排序演算法 理解其演算法原理和適用情況。實驗內容 1.構建乙個陣列,包含n個待排序的資料 2.0號單元不用,用於存放監視哨 3.通過比較和移動實現資料排序,並輸出 4.估計演算法的時間複雜性。原始碼 include stdafx.h include using n...
實驗八 排序演算法的實現 資料結構
1.掌握常用的排序方法,並掌握用高階語言實現排序演算法的方法 2.深刻理解排序的定義和各種排序方法的特點,並能加以靈活應用 3.了解各種方法的排序過程及其時間複雜度的分析方法。實驗在計算機機房,應用軟體vc 統計成績 給出n個學生的考試成績表,每條資訊由姓名和分數組成,試設計乙個演算法 1 按分數高...
資料結構 實驗六 排序
本次實驗實現排序中的直接插入 氣泡排序 快速排序 簡單選擇排序 堆排序等排序演算法。下面放一下自己的 include include include datahead.h define maxsize 20typedef intkeytype typedef struct redtype typed...