程式設計師必備十大演算法3 歸併排序

2021-10-10 06:30:45 字數 964 閱讀 6005

十大演算法之歸併排序首先要有分治的思想

歸併排序的過程

1、建立歸併函式入口mergesort(a,n);a是陣列a,n為陣列長度

入口中要有乙個動態分配陣列,長度為n:(int )malloc(nsizeof(int);

2、建立乙個msort函式msort(a,arr,0,n-1)用來做二分0和n-1就是腳標了

3、合併merge(a,arr,left,mid,right)

上**

//歸併排序

#include

using

namespace std;

int a[

101]

;void

merge

(int

*a,int

*arr,

int left,

int mid,

int right)

while

(i<=mid)arr[k++

]=a[i++];

while

(j<=right)arr[k++

]=a[j++];

while

(left<=right)a[left]

=arr[left]

,left++;}

msort

(int

*a,int

*arr,

int left,

int right)

}void

meagesort

(int

*a,int n)

}int

main()

這個就不多解釋了

看不懂的就來聯絡博主吧,計畫在後續就開始直播了,激動不?

聽懂沒?啥?沒有?快來聯絡博主(qq3100310659(備註:c++學習,不然就不給通過哦,博主就是這麼豪橫)

下一章:程式設計師必備十大演算法4-二分查詢

十大排序演算法 歸併排序

歸併排序是一種概念上最簡單的排序演算法,歸併排序是基於分治法的。歸併排序將待排序的元素序列分成兩個長度相等的子串行,為每乙個子串行排序,然後再將他們合併成乙個子串行。合併兩個子串行的過程也就是兩路歸併。1,申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列 2,設定兩個指標,最初位...

大廠程式設計師必備十大基礎演算法 KMP演算法

字串匹配問題 有乙個字串 str1 010101010101010010101010101 和乙個子串 str2 0101010100 現在要判斷 str1 是否含有 str2,如果存在,就返回第一次出現的位置,如果沒有,則返回 1 如果用暴力匹配的思路,並假設現在 str1 匹配到 i 位置,子串...

程式設計師必備十大演算法 最短路徑(1)

最短路徑的演算法大致可以分為三種,不過每一種的演算法都有所不同 在時間複雜度 空間複雜度 負權 有負權的邊 是否可以檢驗有沒有負權或者帶負權的邊 這個演算法比較簡單,暴力解決,時間複雜度為pow n,3 空間複雜度為pow n,2 可以處理負權和帶負權邊的演算法 最短路徑 1 include usi...