歸併排序是將兩個或者兩個以上的有序序列進行合併的一種排序演算法。採用了分治的思想。一般使用遞迴。
最好、最壞、平均時間複雜度都是o(nlgn)。
由於在歸併過程中需要與原始記錄序列同樣數量的儲存空間存放歸併結果以及遞迴深度為lg2n的棧空間,因此 空間
複雜度為o(n+logn)
#include#include//寫個歸併排序酸爽一下
using namespace std;
templatevoid merge(t* a,int first,int mid,int last)
return; }
int main()
{ int n;
while(cin>>n)
{ int* a=new int[n];
for(int i=0;i>a[i];
merge_sort(a,0,n-1);
for(int i=0;i2、插入排序:
這裡介紹的超好:
3、希爾排序:
插入排序的公升級版,將待排序陣列分成若干組字陣列分別進行插入排序,最後將基本有序的整個陣列進行一輪插入排序,效率上比插入排序要好。
這裡介紹的很詳細:
排序演算法總結 持續更新
1.選擇排序法 1.選擇排序 o n2 穩定 template void selectionsort t arr,int n swap arr i arr minindex 2.插入排序法 2 插入排序 o n2 穩定,近乎有序的陣列時,效率很高 1.交換法 使用swap,效率較低 template...
排序演算法總結(持續更新)
基本思想 通過對待 排序序列從前向後 從下標較小的元素開始 依次比較 相鄰元素的值,若發現逆序則交換,使值較大 的元素逐漸從前移向後部,就象水底下的氣泡一樣逐漸 向上冒。規則 實現 未優化 public static void bubblesort int arr 時間複雜度 空間複雜度 優化氣泡排...
排序演算法大總結(持續更新。。。)
主要思路 選擇乙個基準數字 一般是第乙個數字 設定兩個指標分別為 i和j,j從序列後面往前跳動,i從序列前面往後跳動,j遇到乙個比基準數字小的數字那麼停止,i遇到乙個比基準數字大的數字停止,如果i和j不相等,那麼將這兩個數字交換,直到i和j相等,終止迴圈,將第i個數字和選擇的基準數字交換位置,那麼操...