實驗型別:綜合性
實驗要求:必修
實驗學時: 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 排序結果無法令人滿意 通常情況下,使用者希望的規則是先比較字母的大小,再比較數字的大小...