實驗六排序綜合實驗

2023-01-04 02:42:01 字數 1625 閱讀 5425

實驗型別:綜合性

實驗要求:必修

實驗學時: 3學時

一、實驗目的:

參照各種排序演算法程式樣例,驗證給出的排序常見演算法。

二、實驗要求:

1、掌握各種排序演算法的特點,測試並驗證排序的常見演算法。

2、提交實驗報告,報告內容包括:目的、要求、演算法描述、程式結構、主要變數說明、程式清單、除錯情況、設計技巧、心得體會。

三、實驗內容:

輸入一組關鍵字序列分別實現下列排序:

1.實現直接插入排序;

2.實現氣泡排序演算法;

3.實現快速排序演算法(取第乙個記錄或中間記錄作為基準記錄);

4.快速排序的非遞迴演算法;

5. 堆排序。

把上述幾種排序的演算法編寫成選單,根據輸入的數字不同執行對應的排序演算法。

源程式如下:

#include

using namespace std;

//實現簡單插入排序

template

void insort(t p,int n)

p[k+1]=t;

}return;

}//實現氣泡排序

template

void bub(t p,int n)

return;

}//實現快速排序

template

void qck(t p,int n)

else

bub(p,n);

return;

}template

static int split(t p,int n)

}p[i]=t;

return(i);

}//實現堆排序

template

void hap(t p,int n)

return;

}template

static sift(t p,int i,int n)

else

j=n+1;

}p[i]=t;

return(0);

}//主函式如下

#include

int main()

for(i=0;i<10;i++)

p[i]=100.0+200.0*p[i];

cout<<"排列前的序列為:"< for(i=0;i<10;i++)

insort(p,10);

cout<<"簡單插入排序後的序列為:"< for(i=0;i<10;i++)

bub(p,10);

cout<<"氣泡排序後的序列為:"< for(i=0;i<10;i++)

qck(p,10);

cout<<"快速排序後的序列為:"< for(i=0;i<10;i++)

hap(p,10);

cout<<"堆排序後的序列為:"< for(i=0;i<10;i++)

return 0;

}執行結果如下:

心得體會:

1. 通過本次試驗,我掌握了簡單插入排序、冒泡法排序、快速排序以及堆排序的基本方法。

2. 在本次試驗中,我用模擬c語言常見的排序方法來實現了這一基本的排序技術。

3. 出現的問題在於快速排序中表的分割方法,以及堆排序中調整建堆的概念不是很清楚。

資料結構實驗報告實驗六排序演算法

昆明理工大學資訊工程與自動化學院學生實驗報告 201 201 學年第一學期 課程名稱 資料結構開課實驗室年月日 一.實驗內容 排序演算法,包括直接插入排序,希爾排序,氣泡排序,快速排序,直接選擇排序,堆排序等等。二.實驗目的 1.掌握各種查詢演算法理解和實現 2.增強上機程式設計除錯能力 三.主要程...

資料結構實驗9排序子系統

1 實驗目的 1 掌握常用排序方法的基本思想。2 通過實驗加深理解各種排序演算法。3 通過實驗掌握各種排序方法的時間複雜度分析。4 了解各種排序方法的優缺點及適用範圍。2 實驗內容 1 編寫直接插入排序程式。2 編寫希爾排序程式。3 編寫氣泡排序程式。4 編寫快速排序程式。5 編寫選擇排序程式。6 ...

技巧128排序字母與數字的混合內容

作者 excel home excel實戰技巧精粹 發表於 2008年9月26日 在日常工作中,使用者的 經常會包含由字母和數字混合的資料,在對這樣的資料排序時,結果總是令人無法滿意,如圖1281所示。圖1281 排序結果無法令人滿意 通常情況下,使用者希望的規則是先比較字母的大小,再比較數字的大小...