一、氣泡排序
思想:從前到後兩兩比較,如果前面大於後面,就交換一下,複雜度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 氣泡排序 時間複雜度...