排序演算法 歸併演算法

2021-08-17 09:52:29 字數 927 閱讀 8169

歸併排序:(時間複雜度o(n*lg(n)))

思想:把陣列劃分為兩段區間,假設兩段區間都有序,則合併的區間也有序。

步驟:申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列

設定兩個指標,最初位置分別為兩個已經排序序列的起始位置

比較兩個指標所指向的元素,選擇相對小的元素放入到合併空間,並移動指標到下一位置

重複步驟3直到某一指標達到序列尾

**:

sort.h

#pragma once

//[left,right]

void _mergesort(int* a, int left, int right, int* tmp)

else

}while (begin1 <= end1)

while (begin2 <= end2)

memcpy(a + left, tmp + left, sizeof(int)*(right - left + 1));

}void mergesort(int* a, size_t n)

void testmergesortt()

; mergesort(a,sizeof(a) / sizeof(a[0]));

printarray(a, sizeof(a) / sizeof(a[0]));

}

test.cpp

#include

#include

using

namespace

std;

#include"sort.h"

int main()

排序演算法 歸併

歸併排序 merge sort 是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列 即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。歸併過程 比較...

排序演算法之歸併演算法

歸併排序 merge sort 是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列 即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。歸併的基本思想...

歸併演算法 歸併排序

歸併演算法 歸併排序 這周需要用到歸併演算法,於是找了找相關的資料,整理如下 歸併排序 merge sort 是利用 歸併 技術來進行排序。歸併是指將若干個已排序的子檔案合併成乙個有序的檔案。兩路歸併演算法 1 演算法基本思路 設兩個有序的子檔案 相當於輸入堆 放在同一向量中相鄰的位置上 r low...