擴充套件型歸併排序(模板 仿函式)

2021-08-15 11:33:19 字數 916 閱讀 3804

寫了乙個類似stl中的sort用法的歸併排序,可以以函式形式傳入排序規則。

#include 

#include

#include

#include

using

namespace

std;

template

class mergesort

private:

//排序規則

function func;

//歸併排序

void msort(vector

& data, int low, int high)

int mid = (low+high)/2;

msort(data, low, mid);

msort(data, mid + 1, high);

merge(data,low, mid, high);

}//歸併

void merge(vector

&list1, const

int low,const

int mid, const

int high)else

}if(low_iter > mid && high_iter <= high)

else

if(low_iter <= mid && high_iter > high)

}for(int i = low, j = 0; i <= high; i++, j++)

}};int main();

//以lambda表示式形式傳入比較函式,返回值為boolen型別

mergesort()(a1, (int a, int b));

for_each(a1.begin(), a1.end(), (int i));

}

歸併排序模板

歸併 將兩個或兩個以上的有序表組合成乙個新的有序表。一般情況不用這種方式排序,只有在將多個有序序列整合成乙個有序序列是才會用到歸併排序,才能想歸併效率體現的最高。演算法描敘 1 設初始序列含有n個記錄,則可看成n個有序的子串行,每個子串行長度為1。2 兩兩合併,得到 n 2 個長度為2或1的有序子串...

歸併排序模板

歸併排序主要的思想是分治和合併,合併我覺得挺好理解的,分治是用遞迴實現的感覺不太好理解,我就貼乙個模板,拿著就能用了。要是像仔細學習了解歸併排序的話可以看下這篇文章傳送門,感覺講的不能再詳細了。歸併排序模板 include include include include include define...

歸併排序模板

思路 每次把陣列分成兩部分,一直遞迴下去,當分成最少長度後,開始從最底層向上歸併相鄰的兩段陣列。時間複雜度o n log n include include include using namespace std void merge int a,int left,int right,int mid...