基礎演算法(二)歸併排序

2021-09-28 17:09:54 字數 482 閱讀 3713

快排不穩定,歸併排序穩定

時間複雜度都為nlogn

歸併模板中都為<=,而快排中除了邊界條件都不含等於

# include using namespace std;

const int n = 1e6 + 10;

int n;

int q[n], temp[n];

void merge_sort(int q, int l, int r)//input q

//把沒迴圈完的接到temp後邊

while(i <= mid) temp[k++] = q[i++];

while(j <= r) temp[k++] = q[j++];

//step4:把臨時陣列裡的拿出來

for (i = l, j = 0; i <= r; i ++, j ++) q[i] = temp[j];

}int main()

演算法基礎 歸併排序

1.演算法描述 把原始的陣列分成若干的子陣列,對每乙個子陣列進行排序 繼續把子陣列與子陣列合併,合併後仍然有序,直到全部合併完成,形成有序的陣列。2.演算法實現 2.1.合併子陣列 param unsorted the unsorted array param first the start ind...

演算法基礎 歸併排序

歸併排序即將目標陣列分成n個最小的組 相鄰的2個數字 並將這些最小子陣列排序,依次合併相鄰的子陣列,最後各自有序的子陣列將會合併成完全有序的陣列。這將需要用到遞迴思想。static class mergesort private static void merge int a,int start,i...

基礎演算法 歸併排序

def merge arr 這個函式是先把陣列進行分割,一直分,最後分成乙個數來呼叫第二個函式mergesort進行比較 如果陣列只有乙個數,直接就返回 if len arr 1 return arr mid len arr 2 left arr merge arr mid right arr me...