實驗一:實現順序表的簡單選擇排序、直接插入排序、氣泡排序、快速排序、兩路合併排序及堆排序。
簡單選擇.h
#includetemplatevoid selectsort(t a, int
n)}
直接插入.h
#include //直接插入排序
template
void insertsort(t a, int
n) a[j]=temp;
}
氣泡排序.h
#include templatevoid bubblesort(t a, int
n) i=last;
}}
快速排序
#includetemplateint quicksort(t a,int left,int right)void quick(t a,int
n) }
}template
int i,j;
if(lefti=left;
j=right+1;
dowhile(iswap(a[left),a[j]);
return j;
return 0;
template
void insertsortext(t a,int left,int right)
for(int i=left+1; iint j=i;
t temp=a[i];
while (j>0 && tempa[j]=a[j-1]; j--;
a[j]=temp;
合併排序.h
#include templatevoid merge(t a,int i1,int j1,int i2,int
j2)template
void mergesort(t a, int
n) size*=2;}
}
#include
#include
#include
template
void swap(t &a,t &b)
template
void selectsort(t a,int n) //簡單選擇排序
template
void qsort(t a,int left,int right)
template
void gqsort(t a,int left,int right)
while (i<=j1)
temp[k++]=a[i++];
while(j<=j2)
temp[k++]=a[j++];
for(i=0;i
void mergesort(t a,int n)
size*=2;
} }
int main()
cout selectsort(a,n); cout<<"經過簡單選擇排序後的序列為:" cout<<"開始時間為:" insertsort(b,n); cout<<"經過直接插入排序後的序列為:" cout<<"開始時間為:" bubblesort(c,n); cout<<"經過氣泡排序後的序列為:" cout<<"開始時間為:" quicksort(d,n); cout<<"經過快速排序後的序列為:" cout<<"開始時間為:" mergesort(e,n); cout<<"經過兩路合併排序後的序列為:" cout<<"開始時間為:" gquicksort(f,n); cout<<"經過改進後的快速排序後的序列為:" cout<<"開始時間為:" } 主要都是教材上的 只是用到了time.h庫函式以及其中的clock t類 include include includeusing namespace std templatevoid swap t a,t b templatevoid selectsort t a,int n 簡單選擇排序 tem... 各種內排序演算法效能比較 個人總結 穩定性最好情況 最壞情況 平均空間複雜度 確定最終位置 簡單選擇排序 屬於選擇排序 不穩定o n n 1趟 o n n 1趟 o n n 1趟 o 1 一趟排序後能確定某個元素的最終位置 直接插入排序 穩定o n n 1趟 o n n 1趟 反向有序 o n n ... 這裡只總結各種排序演算法的效能特點,不含演算法具體的實現 演算法是否穩定 是否為原地排序 時間複雜度 空間複雜度 備註選擇排序否是 n 21 插入排序是是 介於n和n 2之間 1取決於輸入元素的排列情況 希爾排序否是 nlogn?n 6 5 1快速排序否是 nlogn lgn執行效率由概率提供保證 ...各種內排序演算法的實現及效能比較
各種內排序演算法效能比較
各種排序演算法的效能特點