各種排序演算法比較以及時間複雜度

2022-02-14 12:44:11 字數 2470 閱讀 8565

1.氣泡排序:n*n。倆個for迴圈決定其時間複雜度為n^2

template <

class

t>

void

swap(t a, 

inti, 

intj)

//冒泡法bubble sort

template

<

class

t>

void

bubsort(t a, 

intn)}}

2.選擇排序:n*n。同樣,倆個for迴圈決定其時間複雜度為n^2。

template <

class

t>

void

swap(t a, 

int i, int j)

template

<

class

t>

void

selsort(t a, 

intn)

swap

<

t>

(a, i, largindex);    

//只進行最後一次交換}}

3.直接插入排序:n*n。倆個for迴圈。

// 1->插入排序

void insertsort(int array, int length)

// 在合適位置安放當前元素

array[j + 1] = key;}}

// 2-->

插入法insert sort 

template <

class

t>

void

swap(t a, 

int i, int j)

//插入法insert sort 

template

<

class

t>

void

inssort(t a, 

intn)}}

4.快速排序:

歸併排序演算法思想的 c實現:

//july/設計/整理/測試/06.06/。

//1.分而治之排序演算法的偽**

//演算法中子集合的數目為2,a中含有n/k個元素。

template void sort( t e, int n)

else

使用插入排序演算法對e 進行排序

}//2.根據網路上的演算法提示,寫出以下**:

#include

void mergepass(int x,int y,int s,int n);

void merge(int c, int d, int l, int m, int r);

//首先將每兩個相鄰的大小為1的子串行歸併

//然後對上一次歸併所得到的大小為2的子串行進行相鄰歸併,

//如此反覆,直至最後歸 並到乙個序列,歸併過程完成。

//通過輪流地將元素從a 歸併到b 並從b 歸併到a,可以虛擬地消除複製過程。

//...二路歸併排序演算法見程式14-3。

//14-3.二路歸併排序

void mergesort(int a,int n)

// 剩下不足2個元素

if(i+s//...函式mergepass(見程式14-4)僅用來確定欲歸併子串行的左端和右端

//...實際的歸併工作由函式merge(見程式14-5 )來完成。

//...函式merge要求針對型別t定義乙個操作符<=。

//14-5。merge函式

void merge(int c, int d, int l, int m, int r)

// 考慮餘下的部分

if(i>m)

else

}int main()

;mergesort(str,7);

for(int i=0;i<7;i++)

printf("%d\n",str[i]);

return 0;

}//3...森林大哥的寫法,測試下,無誤。:

#include

#define n 100

void sort(int str,int n)

if(2==n)

return;

}for(int i=0;i

int main()

;sort(str,7);

for(int i=0;i<7;i++)

printf("%d\n",str[i]);

return 0;

}

各種排序演算法比較 時間複雜度,空間複雜度

n 2表示n的平方,選擇排序有時叫做直接選擇排序或簡單選擇排序 排序方法平均時間最好時間最壞時間 桶排序 不穩定 o n o n o n 基數排序 穩定 o n o n o n 歸併排序 穩定 o nlogn o nlogn o nlogn 快速排序 不穩定 o nlogn o nlogn o n ...

各種排序演算法 c 及時間複雜度分析

編譯平台 vs2010 include stdafx.h int tmain int argc,tchar argv int j,tmp for int i 1 i 8 i a j 1 tmp for int i 0 i 8 i printf n system pause return 0 incl...

各種排序演算法複雜度比較

寫在前面 筆試題目當中會出現各種排序演算法的比較,分為最好,最壞,平均情況的複雜度比較,在這裡總結一下。主要內容 最好情況 一般會這麼問 在各自最優條件下以下演算法複雜度最低的是 看清題目的要求是問在最優的條件下,所以插入排序和氣泡排序是最優的為o n 的複雜度。氣泡排序這裡為啥最好情況時o n 氣...