各種內排序演算法的實現及效能的比較

2022-08-20 11:33:15 字數 2377 閱讀 5783

實驗一:實現順序表的簡單選擇排序、直接插入排序、氣泡排序、快速排序、兩路合併排序及堆排序。

簡單選擇.h

#includetemplate

void selectsort(t a, int

n)}

直接插入.h

#include //

直接插入排序

template

void insertsort(t a, int

n) a[j]=temp;

}

氣泡排序.h

#include template 

void bubblesort(t a, int

n) i=last;

}}

快速排序

#includetemplate

void quick(t a,int

n) }

}template

int quicksort(t a,int left,int right)

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 template

void 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執行效率由概率提供保證 ...