排序演算法總結(c 實現)

2021-08-17 23:58:07 字數 2020 閱讀 4938

一、氣泡排序

思想:從前到後兩兩比較,如果前面大於後面,就交換一下,複雜度o(n^2)

#include 

using

namespace

std;

int main()

; int len = 8, temp;

for (int i = 0; i < len; ++i) }}

for (int k = 0; k < len; ++k)

return

0;}

二、選擇排序

思想:從i到len的數中,選出最小的,放在整個陣列的第i個位置,然後從i+1個位置向後重複上面的過程。複雜度:o(n^2)

#include 

using

namespace

std;

int main()

; int len = 8, temp;

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

int exam;

exam = a[temp];

a[temp] = a[i];

a[i] = exam;

}for (int k = 0; k < len; ++k)

return

0;}

三、插入排序

思想,假設前面的已經排好序列了,那麼第n個向前查詢到的第乙個比自己小的,就是在前面已經排好序的序列中最大的比自己小的那個元素了,插入到那個元素後面即可。複雜度:o(n^2)

#include 

using

namespace

std;

int main()

; int len = 8, temp;

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

else

break;

}a[j+1] = temp;

}for (int k = 0; k < len; ++k)

return

0;}

四、希爾排序

思想:每隔step個元素取出乙個來,組成乙個小的元組,對這個小的元組進行插入排序,就相當於每隔step個元素組成的小的元組進行插入排序。複雜度o(n*logn)

#include 

using

namespace

std;

int main()

; int len = 9, temp;

int step = len/2;

doa[j+step] = temp;

}// cout}while(step>=1);

for (int k = 0; k < len; ++k)

return

0;}

五、歸併排序

思想:利用分治的思想,將陣列分為兩部分,將左邊的排序完成,再排序右邊的,然後將兩部分合併在一起。複雜度o(n*logn)

#include 

using

namespace

std;

void mergearray(int *a, int first, int mid, int last, int *temp)

while(i<=m) temp[k++] = a[i++];

while(j<=n) temp[k++] = a[j++];

int l=-1;

while((++l)void mergesort(int *a, int l, int r, int *temp)

}bool mergesort(int *a, int a_len)

int main()

; const

int a_len = 10;

mergesort(a, a_len);

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

}

經典排序演算法總結 模板(C 實現)

1.選擇排序 template 選擇排序 void selectionsort t arr,int n arr j e 3.歸併排序 template 歸併排序 void meregesort t arr,int qaq,int qbq template 遞迴對 l,r 進行排序 void merg...

排序演算法總結(C )

這裡對排序演算法做乙個總結,還未完結,後序還將加入希爾排序等排序方法。將每乙個數依次與其後面的數做對比,如果前後兩個數逆序,則交換,然後進行下一步對比,經過每乙個交換,最大的數都會被換到陣列尾部,然後使陣列總長度減一,這裡為了節省時間,可以設定乙個標誌位,在每一次迴圈的開始都設為 true,如果在遍...

排序演算法總結 python實現

最近在複習軟考,把看到的排序演算法整理了一下,之所以用python寫,是因為python寫起來簡單.好吧,後來寫的時候發現有些地方用c寫還方便些。python雖然簡潔,但用起來效率感覺還是有些低,不過這不是重點啦。coding utf 8 def bubblesort data 氣泡排序 時間複雜度...